embed_workflow 0.2.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2315) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +89 -0
  4. data/LICENSE +21 -0
  5. data/README.md +235 -0
  6. data/Rakefile +10 -0
  7. data/docs/AccountsApi.md +358 -0
  8. data/docs/ActionTypesApi.md +497 -0
  9. data/docs/ActionsApi.md +475 -0
  10. data/docs/AppConnectionsApi.md +371 -0
  11. data/docs/AvailableAppsApi.md +145 -0
  12. data/docs/CatchHookRequest.md +18 -0
  13. data/docs/CreateActionType422Response.md +22 -0
  14. data/docs/CreateActionTypeRequest.md +50 -0
  15. data/docs/CreateActionTypeRequestFormDraftInner.md +32 -0
  16. data/docs/CreateActionTypeRequestIconDraft.md +22 -0
  17. data/docs/CreateAppConnectionRequest.md +24 -0
  18. data/docs/CreateUserToken200Response.md +18 -0
  19. data/docs/CreateUserTokenRequest.md +20 -0
  20. data/docs/CreateWorkflow201Response.md +92 -0
  21. data/docs/CreateWorkflowRequest.md +32 -0
  22. data/docs/CreateWorkflowRequestTemplateDraft.md +20 -0
  23. data/docs/CreateWorkflowRequestTemplateDraftNodesInner.md +48 -0
  24. data/docs/DataFieldsApi.md +233 -0
  25. data/docs/DeleteActionType200Response.md +18 -0
  26. data/docs/DeleteWorkflow200Response.md +49 -0
  27. data/docs/DeleteWorkflow200ResponseOneOf.md +18 -0
  28. data/docs/DeleteWorkflow200ResponseOneOf1.md +18 -0
  29. data/docs/DiscardWorkflowDraftRequest.md +20 -0
  30. data/docs/EvaluateExpression200Response.md +18 -0
  31. data/docs/EvaluateExpressionRequest.md +20 -0
  32. data/docs/EventsApi.md +81 -0
  33. data/docs/ExecuteWorkflow201Response.md +50 -0
  34. data/docs/ExecuteWorkflowRequest.md +22 -0
  35. data/docs/ExecutionsApi.md +225 -0
  36. data/docs/ExportConfiguration200Response.md +18 -0
  37. data/docs/ExportConfiguration200ResponseConfiguration.md +49 -0
  38. data/docs/ImportConfiguration201Response.md +28 -0
  39. data/docs/ImportConfigurationRequest.md +20 -0
  40. data/docs/ImportConfigurationRequestSchema.md +49 -0
  41. data/docs/InstallApp201Response.md +50 -0
  42. data/docs/InstallAppRequest.md +20 -0
  43. data/docs/InstalledAppsApi.md +282 -0
  44. data/docs/ListActionTypes200Response.md +20 -0
  45. data/docs/ListActionTypes200ResponseCollectionInner.md +106 -0
  46. data/docs/ListActionTypes200ResponseMeta.md +22 -0
  47. data/docs/ListActions200Response.md +20 -0
  48. data/docs/ListActions200ResponseCollectionInner.md +58 -0
  49. data/docs/ListAppConnections200Response.md +20 -0
  50. data/docs/ListAppConnections200ResponseCollectionInner.md +32 -0
  51. data/docs/ListAvailableApps200Response.md +20 -0
  52. data/docs/ListAvailableApps200ResponseCollectionInner.md +32 -0
  53. data/docs/ListDataFields200Response.md +20 -0
  54. data/docs/ListDataFields200ResponseCollectionInner.md +46 -0
  55. data/docs/ListDataFieldsTypeParameter.md +49 -0
  56. data/docs/ListEvents200Response.md +20 -0
  57. data/docs/ListEvents200ResponseCollectionInner.md +36 -0
  58. data/docs/ListInstalledApps200Response.md +20 -0
  59. data/docs/ListInstalledApps200ResponseCollectionInner.md +48 -0
  60. data/docs/ListTriggers200Response.md +20 -0
  61. data/docs/ListTriggers200ResponseCollectionInner.md +50 -0
  62. data/docs/ListUsers200Response.md +20 -0
  63. data/docs/ListUsers200ResponseCollectionInner.md +38 -0
  64. data/docs/ListWorkflowExecutions200Response.md +20 -0
  65. data/docs/ListWorkflowVersions200Response.md +20 -0
  66. data/docs/ListWorkflowVersions200ResponseCollectionInner.md +30 -0
  67. data/docs/ListWorkflows200Response.md +20 -0
  68. data/docs/ListWorkflows200ResponseCollectionInner.md +76 -0
  69. data/docs/PaymentsApi.md +81 -0
  70. data/docs/PublishWorkflowRequest.md +18 -0
  71. data/docs/RetrieveAccount200Response.md +46 -0
  72. data/docs/RetrieveAccountUsage200Response.md +30 -0
  73. data/docs/RetrieveAvailableApp200Response.md +34 -0
  74. data/docs/RetrieveExecution200Response.md +54 -0
  75. data/docs/RetryActionRequest.md +20 -0
  76. data/docs/StopExecutionsRequest.md +20 -0
  77. data/docs/TriggerWorkflowRequest.md +26 -0
  78. data/docs/TriggersApi.md +289 -0
  79. data/docs/UpdateAccountRequest.md +38 -0
  80. data/docs/UpdateAccountRequestActionTypeCategoriesInner.md +24 -0
  81. data/docs/UpdateAccountRequestActionTypeCategoriesInnerIcon.md +22 -0
  82. data/docs/UpdateAccountRequestUserDataSchemaInner.md +26 -0
  83. data/docs/UpdateActionTypeRequest.md +52 -0
  84. data/docs/UpdateInstalledAppRequest.md +18 -0
  85. data/docs/UpdateTriggerRequest.md +20 -0
  86. data/docs/UpdateWorkflowRequest.md +38 -0
  87. data/docs/UpsertUserRequest.md +26 -0
  88. data/docs/UsersApi.md +361 -0
  89. data/docs/WorkflowsApi.md +892 -0
  90. data/embed_workflow.gemspec +40 -0
  91. data/lib/embed_workflow/api/accounts_api.rb +364 -0
  92. data/lib/embed_workflow/api/action_types_api.rb +531 -0
  93. data/lib/embed_workflow/api/actions_api.rb +468 -0
  94. data/lib/embed_workflow/api/app_connections_api.rb +368 -0
  95. data/lib/embed_workflow/api/available_apps_api.rb +141 -0
  96. data/lib/embed_workflow/api/data_fields_api.rb +232 -0
  97. data/lib/embed_workflow/api/events_api.rb +86 -0
  98. data/lib/embed_workflow/api/executions_api.rb +225 -0
  99. data/lib/embed_workflow/api/installed_apps_api.rb +276 -0
  100. data/lib/embed_workflow/api/payments_api.rb +86 -0
  101. data/lib/embed_workflow/api/triggers_api.rb +281 -0
  102. data/lib/embed_workflow/api/users_api.rb +359 -0
  103. data/lib/embed_workflow/api/workflows_api.rb +926 -0
  104. data/lib/embed_workflow/api_client.rb +431 -0
  105. data/lib/embed_workflow/api_error.rb +58 -0
  106. data/lib/embed_workflow/configuration.rb +389 -0
  107. data/lib/embed_workflow/models/catch_hook_request.rb +222 -0
  108. data/lib/embed_workflow/models/create_action_type422_response.rb +256 -0
  109. data/lib/embed_workflow/models/create_action_type_request.rb +388 -0
  110. data/lib/embed_workflow/models/create_action_type_request_form_draft_inner.rb +342 -0
  111. data/lib/embed_workflow/models/create_action_type_request_icon_draft.rb +245 -0
  112. data/lib/embed_workflow/models/create_app_connection_request.rb +273 -0
  113. data/lib/embed_workflow/models/create_user_token200_response.rb +222 -0
  114. data/lib/embed_workflow/models/create_user_token_request.rb +227 -0
  115. data/lib/embed_workflow/models/create_workflow201_response.rb +660 -0
  116. data/lib/embed_workflow/models/create_workflow_request.rb +295 -0
  117. data/lib/embed_workflow/models/create_workflow_request_template_draft.rb +244 -0
  118. data/lib/embed_workflow/models/create_workflow_request_template_draft_nodes_inner.rb +431 -0
  119. data/lib/embed_workflow/models/delete_action_type200_response.rb +222 -0
  120. data/lib/embed_workflow/models/delete_workflow200_response.rb +106 -0
  121. data/lib/embed_workflow/models/delete_workflow200_response_one_of.rb +223 -0
  122. data/lib/embed_workflow/models/delete_workflow200_response_one_of1.rb +223 -0
  123. data/lib/embed_workflow/models/discard_workflow_draft_request.rb +229 -0
  124. data/lib/embed_workflow/models/evaluate_expression200_response.rb +214 -0
  125. data/lib/embed_workflow/models/evaluate_expression_request.rb +241 -0
  126. data/lib/embed_workflow/models/execute_workflow201_response.rb +383 -0
  127. data/lib/embed_workflow/models/execute_workflow_request.rb +275 -0
  128. data/lib/embed_workflow/models/export_configuration200_response.rb +214 -0
  129. data/lib/embed_workflow/models/export_configuration200_response_configuration.rb +105 -0
  130. data/lib/embed_workflow/models/import_configuration201_response.rb +275 -0
  131. data/lib/embed_workflow/models/import_configuration_request.rb +259 -0
  132. data/lib/embed_workflow/models/import_configuration_request_schema.rb +106 -0
  133. data/lib/embed_workflow/models/install_app201_response.rb +388 -0
  134. data/lib/embed_workflow/models/install_app_request.rb +234 -0
  135. data/lib/embed_workflow/models/list_action_types200_response.rb +239 -0
  136. data/lib/embed_workflow/models/list_action_types200_response_collection_inner.rb +755 -0
  137. data/lib/embed_workflow/models/list_action_types200_response_meta.rb +233 -0
  138. data/lib/embed_workflow/models/list_actions200_response.rb +239 -0
  139. data/lib/embed_workflow/models/list_actions200_response_collection_inner.rb +429 -0
  140. data/lib/embed_workflow/models/list_app_connections200_response.rb +239 -0
  141. data/lib/embed_workflow/models/list_app_connections200_response_collection_inner.rb +288 -0
  142. data/lib/embed_workflow/models/list_available_apps200_response.rb +239 -0
  143. data/lib/embed_workflow/models/list_available_apps200_response_collection_inner.rb +287 -0
  144. data/lib/embed_workflow/models/list_data_fields200_response.rb +239 -0
  145. data/lib/embed_workflow/models/list_data_fields200_response_collection_inner.rb +369 -0
  146. data/lib/embed_workflow/models/list_data_fields_type_parameter.rb +105 -0
  147. data/lib/embed_workflow/models/list_events200_response.rb +239 -0
  148. data/lib/embed_workflow/models/list_events200_response_collection_inner.rb +312 -0
  149. data/lib/embed_workflow/models/list_installed_apps200_response.rb +239 -0
  150. data/lib/embed_workflow/models/list_installed_apps200_response_collection_inner.rb +376 -0
  151. data/lib/embed_workflow/models/list_triggers200_response.rb +239 -0
  152. data/lib/embed_workflow/models/list_triggers200_response_collection_inner.rb +387 -0
  153. data/lib/embed_workflow/models/list_users200_response.rb +239 -0
  154. data/lib/embed_workflow/models/list_users200_response_collection_inner.rb +326 -0
  155. data/lib/embed_workflow/models/list_workflow_executions200_response.rb +239 -0
  156. data/lib/embed_workflow/models/list_workflow_versions200_response.rb +239 -0
  157. data/lib/embed_workflow/models/list_workflow_versions200_response_collection_inner.rb +278 -0
  158. data/lib/embed_workflow/models/list_workflows200_response.rb +239 -0
  159. data/lib/embed_workflow/models/list_workflows200_response_collection_inner.rb +562 -0
  160. data/lib/embed_workflow/models/publish_workflow_request.rb +217 -0
  161. data/lib/embed_workflow/models/retrieve_account200_response.rb +371 -0
  162. data/lib/embed_workflow/models/retrieve_account_usage200_response.rb +275 -0
  163. data/lib/embed_workflow/models/retrieve_available_app200_response.rb +299 -0
  164. data/lib/embed_workflow/models/retrieve_execution200_response.rb +405 -0
  165. data/lib/embed_workflow/models/retry_action_request.rb +239 -0
  166. data/lib/embed_workflow/models/stop_executions_request.rb +232 -0
  167. data/lib/embed_workflow/models/trigger_workflow_request.rb +263 -0
  168. data/lib/embed_workflow/models/update_account_request.rb +327 -0
  169. data/lib/embed_workflow/models/update_account_request_action_type_categories_inner.rb +258 -0
  170. data/lib/embed_workflow/models/update_account_request_action_type_categories_inner_icon.rb +233 -0
  171. data/lib/embed_workflow/models/update_account_request_user_data_schema_inner.rb +271 -0
  172. data/lib/embed_workflow/models/update_action_type_request.rb +384 -0
  173. data/lib/embed_workflow/models/update_installed_app_request.rb +217 -0
  174. data/lib/embed_workflow/models/update_trigger_request.rb +225 -0
  175. data/lib/embed_workflow/models/update_workflow_request.rb +329 -0
  176. data/lib/embed_workflow/models/upsert_user_request.rb +259 -0
  177. data/lib/embed_workflow/version.rb +12 -2
  178. data/lib/embed_workflow.rb +244 -29
  179. data/spec/api/accounts_api_spec.rb +92 -0
  180. data/spec/api/action_types_api_spec.rb +116 -0
  181. data/spec/api/actions_api_spec.rb +125 -0
  182. data/spec/api/app_connections_api_spec.rb +97 -0
  183. data/spec/api/available_apps_api_spec.rb +57 -0
  184. data/spec/api/data_fields_api_spec.rb +76 -0
  185. data/spec/api/events_api_spec.rb +48 -0
  186. data/spec/api/executions_api_spec.rb +72 -0
  187. data/spec/api/installed_apps_api_spec.rb +79 -0
  188. data/spec/api/payments_api_spec.rb +48 -0
  189. data/spec/api/triggers_api_spec.rb +82 -0
  190. data/spec/api/users_api_spec.rb +94 -0
  191. data/spec/api/workflows_api_spec.rb +190 -0
  192. data/spec/models/catch_hook_request_spec.rb +36 -0
  193. data/spec/models/create_action_type422_response_spec.rb +48 -0
  194. data/spec/models/create_action_type_request_form_draft_inner_spec.rb +82 -0
  195. data/spec/models/create_action_type_request_icon_draft_spec.rb +48 -0
  196. data/spec/models/create_action_type_request_spec.rb +126 -0
  197. data/spec/models/create_app_connection_request_spec.rb +54 -0
  198. data/spec/models/create_user_token200_response_spec.rb +36 -0
  199. data/spec/models/create_user_token_request_spec.rb +42 -0
  200. data/spec/models/create_workflow201_response_spec.rb +266 -0
  201. data/spec/models/create_workflow_request_spec.rb +78 -0
  202. data/spec/models/create_workflow_request_template_draft_nodes_inner_spec.rb +134 -0
  203. data/spec/models/create_workflow_request_template_draft_spec.rb +42 -0
  204. data/spec/models/delete_action_type200_response_spec.rb +36 -0
  205. data/spec/models/delete_workflow200_response_one_of1_spec.rb +36 -0
  206. data/spec/models/delete_workflow200_response_one_of_spec.rb +36 -0
  207. data/spec/models/delete_workflow200_response_spec.rb +32 -0
  208. data/spec/models/discard_workflow_draft_request_spec.rb +42 -0
  209. data/spec/models/evaluate_expression200_response_spec.rb +36 -0
  210. data/spec/models/evaluate_expression_request_spec.rb +42 -0
  211. data/spec/models/execute_workflow201_response_spec.rb +132 -0
  212. data/spec/models/execute_workflow_request_spec.rb +52 -0
  213. data/spec/models/export_configuration200_response_configuration_spec.rb +32 -0
  214. data/spec/models/export_configuration200_response_spec.rb +36 -0
  215. data/spec/models/import_configuration201_response_spec.rb +66 -0
  216. data/spec/models/import_configuration_request_schema_spec.rb +32 -0
  217. data/spec/models/import_configuration_request_spec.rb +46 -0
  218. data/spec/models/install_app201_response_spec.rb +132 -0
  219. data/spec/models/install_app_request_spec.rb +42 -0
  220. data/spec/models/list_action_types200_response_collection_inner_spec.rb +312 -0
  221. data/spec/models/list_action_types200_response_meta_spec.rb +48 -0
  222. data/spec/models/list_action_types200_response_spec.rb +42 -0
  223. data/spec/models/list_actions200_response_collection_inner_spec.rb +156 -0
  224. data/spec/models/list_actions200_response_spec.rb +42 -0
  225. data/spec/models/list_app_connections200_response_collection_inner_spec.rb +78 -0
  226. data/spec/models/list_app_connections200_response_spec.rb +42 -0
  227. data/spec/models/list_available_apps200_response_collection_inner_spec.rb +78 -0
  228. data/spec/models/list_available_apps200_response_spec.rb +42 -0
  229. data/spec/models/list_data_fields200_response_collection_inner_spec.rb +120 -0
  230. data/spec/models/list_data_fields200_response_spec.rb +42 -0
  231. data/spec/models/list_data_fields_type_parameter_spec.rb +32 -0
  232. data/spec/models/list_events200_response_collection_inner_spec.rb +90 -0
  233. data/spec/models/list_events200_response_spec.rb +42 -0
  234. data/spec/models/list_installed_apps200_response_collection_inner_spec.rb +126 -0
  235. data/spec/models/list_installed_apps200_response_spec.rb +42 -0
  236. data/spec/models/list_triggers200_response_collection_inner_spec.rb +132 -0
  237. data/spec/models/list_triggers200_response_spec.rb +42 -0
  238. data/spec/models/list_users200_response_collection_inner_spec.rb +96 -0
  239. data/spec/models/list_users200_response_spec.rb +42 -0
  240. data/spec/models/list_workflow_executions200_response_spec.rb +42 -0
  241. data/spec/models/list_workflow_versions200_response_collection_inner_spec.rb +72 -0
  242. data/spec/models/list_workflow_versions200_response_spec.rb +42 -0
  243. data/spec/models/list_workflows200_response_collection_inner_spec.rb +214 -0
  244. data/spec/models/list_workflows200_response_spec.rb +42 -0
  245. data/spec/models/publish_workflow_request_spec.rb +36 -0
  246. data/spec/models/retrieve_account200_response_spec.rb +120 -0
  247. data/spec/models/retrieve_account_usage200_response_spec.rb +72 -0
  248. data/spec/models/retrieve_available_app200_response_spec.rb +84 -0
  249. data/spec/models/retrieve_execution200_response_spec.rb +144 -0
  250. data/spec/models/retry_action_request_spec.rb +42 -0
  251. data/spec/models/stop_executions_request_spec.rb +42 -0
  252. data/spec/models/trigger_workflow_request_spec.rb +60 -0
  253. data/spec/models/update_account_request_action_type_categories_inner_icon_spec.rb +48 -0
  254. data/spec/models/update_account_request_action_type_categories_inner_spec.rb +54 -0
  255. data/spec/models/update_account_request_spec.rb +96 -0
  256. data/spec/models/update_account_request_user_data_schema_inner_spec.rb +60 -0
  257. data/spec/models/update_action_type_request_spec.rb +132 -0
  258. data/spec/models/update_installed_app_request_spec.rb +36 -0
  259. data/spec/models/update_trigger_request_spec.rb +42 -0
  260. data/spec/models/update_workflow_request_spec.rb +96 -0
  261. data/spec/models/upsert_user_request_spec.rb +60 -0
  262. data/spec/spec_helper.rb +111 -0
  263. data/vendor/bundle/ruby/3.2.0/bin/byebug +29 -0
  264. data/vendor/bundle/ruby/3.2.0/bin/coderay +29 -0
  265. data/vendor/bundle/ruby/3.2.0/bin/htmldiff +29 -0
  266. data/vendor/bundle/ruby/3.2.0/bin/ldiff +29 -0
  267. data/vendor/bundle/ruby/3.2.0/bin/pry +29 -0
  268. data/vendor/bundle/ruby/3.2.0/bin/racc +29 -0
  269. data/vendor/bundle/ruby/3.2.0/bin/rake +29 -0
  270. data/vendor/bundle/ruby/3.2.0/bin/rspec +29 -0
  271. data/vendor/bundle/ruby/3.2.0/bin/rubocop +29 -0
  272. data/vendor/bundle/ruby/3.2.0/bin/ruby-parse +29 -0
  273. data/vendor/bundle/ruby/3.2.0/bin/ruby-rewrite +29 -0
  274. data/vendor/bundle/ruby/3.2.0/cache/ast-2.4.3.gem +0 -0
  275. data/vendor/bundle/ruby/3.2.0/cache/byebug-13.0.0.gem +0 -0
  276. data/vendor/bundle/ruby/3.2.0/cache/coderay-1.1.3.gem +0 -0
  277. data/vendor/bundle/ruby/3.2.0/cache/date-3.5.1.gem +0 -0
  278. data/vendor/bundle/ruby/3.2.0/cache/diff-lcs-1.6.2.gem +0 -0
  279. data/vendor/bundle/ruby/3.2.0/cache/faraday-2.14.3.gem +0 -0
  280. data/vendor/bundle/ruby/3.2.0/cache/faraday-multipart-1.2.0.gem +0 -0
  281. data/vendor/bundle/ruby/3.2.0/cache/faraday-net_http-3.4.4.gem +0 -0
  282. data/vendor/bundle/ruby/3.2.0/cache/io-console-0.8.2.gem +0 -0
  283. data/vendor/bundle/ruby/3.2.0/cache/jaro_winkler-1.5.6.gem +0 -0
  284. data/vendor/bundle/ruby/3.2.0/cache/json-2.20.0.gem +0 -0
  285. data/vendor/bundle/ruby/3.2.0/cache/logger-1.7.0.gem +0 -0
  286. data/vendor/bundle/ruby/3.2.0/cache/method_source-1.1.0.gem +0 -0
  287. data/vendor/bundle/ruby/3.2.0/cache/multipart-post-2.4.1.gem +0 -0
  288. data/vendor/bundle/ruby/3.2.0/cache/net-http-0.9.1.gem +0 -0
  289. data/vendor/bundle/ruby/3.2.0/cache/parallel-1.28.0.gem +0 -0
  290. data/vendor/bundle/ruby/3.2.0/cache/parser-3.3.11.1.gem +0 -0
  291. data/vendor/bundle/ruby/3.2.0/cache/pry-0.16.0.gem +0 -0
  292. data/vendor/bundle/ruby/3.2.0/cache/pry-byebug-3.12.0.gem +0 -0
  293. data/vendor/bundle/ruby/3.2.0/cache/psych-5.4.0.gem +0 -0
  294. data/vendor/bundle/ruby/3.2.0/cache/racc-1.8.1.gem +0 -0
  295. data/vendor/bundle/ruby/3.2.0/cache/rainbow-3.1.1.gem +0 -0
  296. data/vendor/bundle/ruby/3.2.0/cache/rake-13.0.6.gem +0 -0
  297. data/vendor/bundle/ruby/3.2.0/cache/reline-0.6.3.gem +0 -0
  298. data/vendor/bundle/ruby/3.2.0/cache/rspec-3.13.2.gem +0 -0
  299. data/vendor/bundle/ruby/3.2.0/cache/rspec-core-3.13.6.gem +0 -0
  300. data/vendor/bundle/ruby/3.2.0/cache/rspec-expectations-3.13.5.gem +0 -0
  301. data/vendor/bundle/ruby/3.2.0/cache/rspec-mocks-3.13.8.gem +0 -0
  302. data/vendor/bundle/ruby/3.2.0/cache/rspec-support-3.13.7.gem +0 -0
  303. data/vendor/bundle/ruby/3.2.0/cache/rubocop-0.66.0.gem +0 -0
  304. data/vendor/bundle/ruby/3.2.0/cache/ruby-progressbar-1.13.0.gem +0 -0
  305. data/vendor/bundle/ruby/3.2.0/cache/stringio-3.2.0.gem +0 -0
  306. data/vendor/bundle/ruby/3.2.0/cache/unicode-display_width-1.5.0.gem +0 -0
  307. data/vendor/bundle/ruby/3.2.0/cache/uri-1.1.1.gem +0 -0
  308. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/byebug-13.0.0/byebug/byebug.so +0 -0
  309. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/byebug-13.0.0/gem.build_complete +0 -0
  310. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/byebug-13.0.0/gem_make.out +42 -0
  311. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/date-3.5.1/date_core.so +0 -0
  312. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/date-3.5.1/gem.build_complete +0 -0
  313. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/date-3.5.1/gem_make.out +24 -0
  314. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/date-3.5.1/mkmf.log +93 -0
  315. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/io-console-0.8.2/gem.build_complete +0 -0
  316. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/io-console-0.8.2/gem_make.out +31 -0
  317. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/io-console-0.8.2/io/console.so +0 -0
  318. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/io-console-0.8.2/mkmf.log +457 -0
  319. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/jaro_winkler-1.5.6/gem.build_complete +0 -0
  320. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/jaro_winkler-1.5.6/gem_make.out +29 -0
  321. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/jaro_winkler-1.5.6/jaro_winkler/jaro_winkler_ext.so +0 -0
  322. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/json-2.20.0/gem.build_complete +0 -0
  323. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/json-2.20.0/gem_make.out +31 -0
  324. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/json-2.20.0/json/ext/generator.so +0 -0
  325. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/json-2.20.0/json/ext/parser.so +0 -0
  326. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/json-2.20.0/mkmf.log +358 -0
  327. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/psych-5.4.0/gem.build_complete +0 -0
  328. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/psych-5.4.0/gem_make.out +28 -0
  329. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/psych-5.4.0/mkmf.log +37 -0
  330. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/psych-5.4.0/psych.so +0 -0
  331. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/racc-1.8.1/gem.build_complete +0 -0
  332. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/racc-1.8.1/gem_make.out +18 -0
  333. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/racc-1.8.1/racc/cparse.so +0 -0
  334. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/stringio-3.2.0/gem.build_complete +0 -0
  335. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/stringio-3.2.0/gem_make.out +19 -0
  336. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/stringio-3.2.0/mkmf.log +33 -0
  337. data/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/stringio-3.2.0/stringio.so +0 -0
  338. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/LICENSE.MIT +20 -0
  339. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/README.YARD.md +12 -0
  340. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/lib/ast/node.rb +268 -0
  341. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/lib/ast/processor/mixin.rb +288 -0
  342. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/lib/ast/processor.rb +12 -0
  343. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/lib/ast/sexp.rb +30 -0
  344. data/vendor/bundle/ruby/3.2.0/gems/ast-2.4.3/lib/ast.rb +17 -0
  345. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/CHANGELOG.md +980 -0
  346. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/CONTRIBUTING.md +58 -0
  347. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/GUIDE.md +1806 -0
  348. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/LICENSE +23 -0
  349. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/README.md +197 -0
  350. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/exe/byebug +6 -0
  351. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/Makefile +269 -0
  352. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/breakpoint.c +522 -0
  353. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/byebug.c +906 -0
  354. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/byebug.h +147 -0
  355. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/context.c +682 -0
  356. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/extconf.rb +12 -0
  357. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/locker.c +96 -0
  358. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/ext/byebug/threads.c +254 -0
  359. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/attacher.rb +48 -0
  360. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/breakpoint.rb +94 -0
  361. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/byebug.so +0 -0
  362. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/command.rb +111 -0
  363. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/command_list.rb +34 -0
  364. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/break.rb +114 -0
  365. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/catch.rb +78 -0
  366. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/condition.rb +55 -0
  367. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/continue.rb +68 -0
  368. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/debug.rb +38 -0
  369. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/delete.rb +55 -0
  370. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/disable/breakpoints.rb +42 -0
  371. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/disable/display.rb +43 -0
  372. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/disable.rb +33 -0
  373. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/display.rb +66 -0
  374. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/down.rb +45 -0
  375. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/edit.rb +69 -0
  376. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/enable/breakpoints.rb +42 -0
  377. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/enable/display.rb +43 -0
  378. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/enable.rb +33 -0
  379. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/finish.rb +57 -0
  380. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/frame.rb +57 -0
  381. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/help.rb +64 -0
  382. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/history.rb +39 -0
  383. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info/breakpoints.rb +65 -0
  384. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info/display.rb +49 -0
  385. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info/file.rb +80 -0
  386. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info/line.rb +35 -0
  387. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info/program.rb +49 -0
  388. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/info.rb +37 -0
  389. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/interrupt.rb +34 -0
  390. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/irb.rb +51 -0
  391. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/kill.rb +45 -0
  392. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/list.rb +159 -0
  393. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/method.rb +53 -0
  394. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/next.rb +40 -0
  395. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/pry.rb +41 -0
  396. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/quit.rb +42 -0
  397. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/restart.rb +64 -0
  398. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/save.rb +72 -0
  399. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/set.rb +79 -0
  400. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/show.rb +45 -0
  401. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/skip.rb +85 -0
  402. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/source.rb +40 -0
  403. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/step.rb +40 -0
  404. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread/current.rb +37 -0
  405. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread/list.rb +43 -0
  406. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread/resume.rb +45 -0
  407. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread/stop.rb +43 -0
  408. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread/switch.rb +46 -0
  409. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/thread.rb +34 -0
  410. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/tracevar.rb +54 -0
  411. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/undisplay.rb +51 -0
  412. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/untracevar.rb +36 -0
  413. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/up.rb +45 -0
  414. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/all.rb +41 -0
  415. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/args.rb +39 -0
  416. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/const.rb +49 -0
  417. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/global.rb +37 -0
  418. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/instance.rb +39 -0
  419. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var/local.rb +39 -0
  420. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/var.rb +37 -0
  421. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands/where.rb +64 -0
  422. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/commands.rb +40 -0
  423. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/context.rb +157 -0
  424. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/core.rb +115 -0
  425. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/errors.rb +29 -0
  426. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/frame.rb +185 -0
  427. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/bin.rb +47 -0
  428. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/eval.rb +124 -0
  429. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/file.rb +67 -0
  430. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/frame.rb +75 -0
  431. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/parse.rb +82 -0
  432. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/path.rb +40 -0
  433. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/reflection.rb +19 -0
  434. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/string.rb +33 -0
  435. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/thread.rb +67 -0
  436. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/toggle.rb +62 -0
  437. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/helpers/var.rb +70 -0
  438. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/history.rb +120 -0
  439. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/interface.rb +146 -0
  440. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/interfaces/local_interface.rb +63 -0
  441. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/interfaces/remote_interface.rb +50 -0
  442. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/interfaces/script_interface.rb +33 -0
  443. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/interfaces/test_interface.rb +67 -0
  444. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/option_setter.rb +95 -0
  445. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/printers/base.rb +68 -0
  446. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/printers/plain.rb +44 -0
  447. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/printers/texts/base.yml +115 -0
  448. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/printers/texts/plain.yml +33 -0
  449. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/processors/command_processor.rb +173 -0
  450. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/processors/control_processor.rb +24 -0
  451. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/processors/post_mortem_processor.rb +18 -0
  452. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/processors/script_processor.rb +49 -0
  453. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/remote/client.rb +57 -0
  454. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/remote/server.rb +47 -0
  455. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/remote.rb +85 -0
  456. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/runner.rb +198 -0
  457. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/setting.rb +79 -0
  458. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/autoirb.rb +29 -0
  459. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/autolist.rb +29 -0
  460. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/autopry.rb +29 -0
  461. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/autosave.rb +17 -0
  462. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/basename.rb +16 -0
  463. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/callstyle.rb +20 -0
  464. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/fullpath.rb +16 -0
  465. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/histfile.rb +20 -0
  466. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/histsize.rb +20 -0
  467. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/linetrace.rb +22 -0
  468. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/listsize.rb +21 -0
  469. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/post_mortem.rb +27 -0
  470. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/savefile.rb +20 -0
  471. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/stack_on_error.rb +15 -0
  472. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/settings/width.rb +20 -0
  473. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/source_file_formatter.rb +71 -0
  474. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/subcommands.rb +54 -0
  475. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug/version.rb +8 -0
  476. data/vendor/bundle/ruby/3.2.0/gems/byebug-13.0.0/lib/byebug.rb +3 -0
  477. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/MIT-LICENSE +22 -0
  478. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/README_INDEX.rdoc +123 -0
  479. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/bin/coderay +215 -0
  480. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/duo.rb +81 -0
  481. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/_map.rb +17 -0
  482. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/comment_filter.rb +25 -0
  483. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/count.rb +39 -0
  484. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/debug.rb +49 -0
  485. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/debug_lint.rb +63 -0
  486. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/div.rb +23 -0
  487. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/encoder.rb +190 -0
  488. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/filter.rb +58 -0
  489. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/html/css.rb +65 -0
  490. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/html/numbering.rb +108 -0
  491. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/html/output.rb +164 -0
  492. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/html.rb +333 -0
  493. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/json.rb +83 -0
  494. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/lines_of_code.rb +45 -0
  495. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/lint.rb +59 -0
  496. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/null.rb +18 -0
  497. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/page.rb +24 -0
  498. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/span.rb +23 -0
  499. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/statistic.rb +95 -0
  500. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/terminal.rb +195 -0
  501. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/text.rb +46 -0
  502. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/token_kind_filter.rb +111 -0
  503. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/xml.rb +72 -0
  504. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders/yaml.rb +50 -0
  505. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/encoders.rb +18 -0
  506. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/for_redcloth.rb +95 -0
  507. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/helpers/file_type.rb +151 -0
  508. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/helpers/plugin.rb +55 -0
  509. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/helpers/plugin_host.rb +221 -0
  510. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/helpers/word_list.rb +72 -0
  511. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/_map.rb +24 -0
  512. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/c.rb +189 -0
  513. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/clojure.rb +217 -0
  514. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/cpp.rb +217 -0
  515. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/css.rb +196 -0
  516. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/debug.rb +75 -0
  517. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/delphi.rb +144 -0
  518. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/diff.rb +221 -0
  519. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/erb.rb +81 -0
  520. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/go.rb +208 -0
  521. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/groovy.rb +268 -0
  522. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/haml.rb +168 -0
  523. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/html.rb +275 -0
  524. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/java/builtin_types.rb +421 -0
  525. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/java.rb +174 -0
  526. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/java_script.rb +236 -0
  527. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/json.rb +98 -0
  528. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/lua.rb +280 -0
  529. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/php.rb +527 -0
  530. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/python.rb +287 -0
  531. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/raydebug.rb +75 -0
  532. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby/patterns.rb +178 -0
  533. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby/string_state.rb +79 -0
  534. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby.rb +477 -0
  535. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/sass.rb +232 -0
  536. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/scanner.rb +337 -0
  537. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/sql.rb +169 -0
  538. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/taskpaper.rb +36 -0
  539. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/text.rb +26 -0
  540. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/xml.rb +17 -0
  541. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners/yaml.rb +140 -0
  542. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/scanners.rb +27 -0
  543. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/styles/_map.rb +7 -0
  544. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/styles/alpha.rb +153 -0
  545. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/styles/style.rb +18 -0
  546. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/styles.rb +15 -0
  547. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/token_kinds.rb +85 -0
  548. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/tokens.rb +164 -0
  549. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb +55 -0
  550. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/version.rb +3 -0
  551. data/vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay.rb +284 -0
  552. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/BSDL +22 -0
  553. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/COPYING +56 -0
  554. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/README.md +102 -0
  555. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/Makefile +269 -0
  556. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/date_core.c +10065 -0
  557. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/date_parse.c +3086 -0
  558. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/date_strftime.c +638 -0
  559. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/date_strptime.c +704 -0
  560. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/date_tmx.h +56 -0
  561. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/extconf.rb +13 -0
  562. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/prereq.mk +19 -0
  563. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/zonetab.h +1564 -0
  564. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/ext/date/zonetab.list +330 -0
  565. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/lib/date.rb +70 -0
  566. data/vendor/bundle/ruby/3.2.0/gems/date-3.5.1/lib/date_core.so +0 -0
  567. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/.rspec +1 -0
  568. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/CHANGELOG.md +518 -0
  569. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/CODE_OF_CONDUCT.md +128 -0
  570. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/CONTRIBUTING.md +71 -0
  571. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/CONTRIBUTORS.md +49 -0
  572. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/LICENCE.md +40 -0
  573. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/Manifest.txt +115 -0
  574. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/README.md +92 -0
  575. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/Rakefile +115 -0
  576. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/SECURITY.md +41 -0
  577. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/bin/htmldiff +35 -0
  578. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/bin/ldiff +9 -0
  579. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/docs/COPYING.txt +339 -0
  580. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/docs/artistic.txt +127 -0
  581. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/array.rb +7 -0
  582. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/backports.rb +13 -0
  583. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/block.rb +37 -0
  584. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/callbacks.rb +327 -0
  585. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/change.rb +174 -0
  586. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/htmldiff.rb +160 -0
  587. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/hunk.rb +379 -0
  588. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/internals.rb +308 -0
  589. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/ldiff.rb +189 -0
  590. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/string.rb +5 -0
  591. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs/version.rb +7 -0
  592. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff/lcs.rb +742 -0
  593. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/lib/diff-lcs.rb +3 -0
  594. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/mise.toml +5 -0
  595. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/change_spec.rb +89 -0
  596. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/diff_spec.rb +51 -0
  597. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/123_x +2 -0
  598. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/456_x +2 -0
  599. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/aX +1 -0
  600. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/bXaX +1 -0
  601. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ds1.csv +50 -0
  602. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ds2.csv +51 -0
  603. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/empty +0 -0
  604. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/file1.bin +0 -0
  605. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/file2.bin +0 -0
  606. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/four_lines +4 -0
  607. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/four_lines_with_missing_new_line +4 -0
  608. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/diff.missing_new_line1-e +1 -0
  609. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/diff.missing_new_line1-f +1 -0
  610. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/diff.missing_new_line2-e +1 -0
  611. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/diff.missing_new_line2-f +1 -0
  612. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.chef-e +2 -0
  613. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.chef-f +2 -0
  614. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.missing_new_line1-e +1 -0
  615. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.missing_new_line1-f +1 -0
  616. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.missing_new_line2-e +1 -0
  617. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/error.diff.missing_new_line2-f +1 -0
  618. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff +4 -0
  619. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff-c +7 -0
  620. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff-e +3 -0
  621. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff-f +3 -0
  622. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff-u +5 -0
  623. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin1 +0 -0
  624. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin1-c +0 -0
  625. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin1-e +0 -0
  626. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin1-f +0 -0
  627. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin1-u +0 -0
  628. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin2 +1 -0
  629. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin2-c +1 -0
  630. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin2-e +1 -0
  631. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin2-f +1 -0
  632. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.bin2-u +1 -0
  633. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef +4 -0
  634. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  635. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  636. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  637. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  638. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  639. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  640. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  641. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  642. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  643. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  644. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.empty.vs.four_lines +5 -0
  645. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-c +9 -0
  646. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-e +6 -0
  647. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-f +6 -0
  648. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-u +7 -0
  649. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.four_lines.vs.empty +5 -0
  650. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-c +9 -0
  651. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-e +1 -0
  652. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-f +1 -0
  653. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-u +7 -0
  654. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.issue95_trailing_context +4 -0
  655. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.issue95_trailing_context-c +9 -0
  656. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.issue95_trailing_context-e +3 -0
  657. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.issue95_trailing_context-f +3 -0
  658. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.issue95_trailing_context-u +6 -0
  659. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line1 +5 -0
  660. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line1-c +14 -0
  661. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line1-e +0 -0
  662. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line1-f +0 -0
  663. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line1-u +9 -0
  664. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line2 +5 -0
  665. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line2-c +14 -0
  666. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line2-e +0 -0
  667. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line2-f +0 -0
  668. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/ldiff/output.diff.missing_new_line2-u +9 -0
  669. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/new-chef +4 -0
  670. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/new-chef2 +17 -0
  671. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/old-chef +4 -0
  672. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/fixtures/old-chef2 +14 -0
  673. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/hunk_spec.rb +83 -0
  674. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/issues_spec.rb +160 -0
  675. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/lcs_spec.rb +56 -0
  676. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/ldiff_spec.rb +100 -0
  677. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/patch_spec.rb +416 -0
  678. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/sdiff_spec.rb +216 -0
  679. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/spec_helper.rb +376 -0
  680. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/traverse_balanced_spec.rb +312 -0
  681. data/vendor/bundle/ruby/3.2.0/gems/diff-lcs-1.6.2/spec/traverse_sequences_spec.rb +137 -0
  682. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/CHANGELOG.md +574 -0
  683. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/LICENSE.md +20 -0
  684. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/README.md +67 -0
  685. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/Rakefile +12 -0
  686. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/examples/client_spec.rb +119 -0
  687. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/examples/client_test.rb +144 -0
  688. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/adapter/test.rb +319 -0
  689. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/adapter.rb +102 -0
  690. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/adapter_registry.rb +30 -0
  691. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/connection.rb +567 -0
  692. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/encoders/flat_params_encoder.rb +106 -0
  693. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/encoders/nested_params_encoder.rb +193 -0
  694. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/error.rb +202 -0
  695. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/logging/formatter.rb +118 -0
  696. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/methods.rb +6 -0
  697. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/middleware.rb +72 -0
  698. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/middleware_registry.rb +83 -0
  699. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options/connection_options.rb +23 -0
  700. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options/env.rb +204 -0
  701. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options/proxy_options.rb +39 -0
  702. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options/request_options.rb +23 -0
  703. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options/ssl_options.rb +76 -0
  704. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/options.rb +219 -0
  705. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/parameters.rb +5 -0
  706. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/rack_builder.rb +248 -0
  707. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/request/authorization.rb +54 -0
  708. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/request/instrumentation.rb +58 -0
  709. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/request/json.rb +70 -0
  710. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/request/url_encoded.rb +60 -0
  711. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/request.rb +139 -0
  712. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/response/json.rb +74 -0
  713. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/response/logger.rb +39 -0
  714. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/response/raise_error.rb +83 -0
  715. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/response.rb +95 -0
  716. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/utils/headers.rb +150 -0
  717. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/utils/params_hash.rb +61 -0
  718. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/utils.rb +121 -0
  719. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday/version.rb +5 -0
  720. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/lib/faraday.rb +158 -0
  721. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/external_adapters/faraday_specs_setup.rb +14 -0
  722. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/adapter/test_spec.rb +460 -0
  723. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/adapter_registry_spec.rb +28 -0
  724. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/adapter_spec.rb +55 -0
  725. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/connection_spec.rb +860 -0
  726. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/error_spec.rb +175 -0
  727. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/middleware_registry_spec.rb +31 -0
  728. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/middleware_spec.rb +213 -0
  729. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/options/env_spec.rb +76 -0
  730. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/options/options_spec.rb +297 -0
  731. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/options/proxy_options_spec.rb +79 -0
  732. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/options/request_options_spec.rb +19 -0
  733. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/params_encoders/flat_spec.rb +42 -0
  734. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/params_encoders/nested_spec.rb +179 -0
  735. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/rack_builder_spec.rb +317 -0
  736. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/request/authorization_spec.rb +118 -0
  737. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/request/instrumentation_spec.rb +74 -0
  738. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/request/json_spec.rb +199 -0
  739. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/request/url_encoded_spec.rb +93 -0
  740. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/request_spec.rb +119 -0
  741. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/response/json_spec.rb +206 -0
  742. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/response/logger_spec.rb +299 -0
  743. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/response/raise_error_spec.rb +286 -0
  744. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/response_spec.rb +84 -0
  745. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/utils/headers_spec.rb +109 -0
  746. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday/utils_spec.rb +120 -0
  747. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/faraday_spec.rb +43 -0
  748. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/spec_helper.rb +133 -0
  749. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/disabling_stub.rb +14 -0
  750. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/fake_safe_buffer.rb +15 -0
  751. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/faraday_middleware_subclasses.rb +18 -0
  752. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/helper_methods.rb +96 -0
  753. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/shared_examples/adapter.rb +105 -0
  754. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/shared_examples/params_encoder.rb +18 -0
  755. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/shared_examples/request_method.rb +263 -0
  756. data/vendor/bundle/ruby/3.2.0/gems/faraday-2.14.3/spec/support/streaming_response_checker.rb +35 -0
  757. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/CHANGELOG.md +54 -0
  758. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/LICENSE.md +21 -0
  759. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/README.md +170 -0
  760. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/lib/faraday/multipart/file_part.rb +130 -0
  761. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/lib/faraday/multipart/middleware.rb +134 -0
  762. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/lib/faraday/multipart/param_part.rb +55 -0
  763. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/lib/faraday/multipart/version.rb +16 -0
  764. data/vendor/bundle/ruby/3.2.0/gems/faraday-multipart-1.2.0/lib/faraday/multipart.rb +26 -0
  765. data/vendor/bundle/ruby/3.2.0/gems/faraday-net_http-3.4.4/LICENSE.md +21 -0
  766. data/vendor/bundle/ruby/3.2.0/gems/faraday-net_http-3.4.4/README.md +57 -0
  767. data/vendor/bundle/ruby/3.2.0/gems/faraday-net_http-3.4.4/lib/faraday/adapter/net_http.rb +205 -0
  768. data/vendor/bundle/ruby/3.2.0/gems/faraday-net_http-3.4.4/lib/faraday/net_http/version.rb +7 -0
  769. data/vendor/bundle/ruby/3.2.0/gems/faraday-net_http-3.4.4/lib/faraday/net_http.rb +10 -0
  770. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/.document +5 -0
  771. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/BSDL +22 -0
  772. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/COPYING +56 -0
  773. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/README.md +46 -0
  774. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/ext/io/console/Makefile +271 -0
  775. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/ext/io/console/console.c +2022 -0
  776. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/ext/io/console/extconf.rb +61 -0
  777. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/ext/io/console/win32_vk.inc +1390 -0
  778. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/lib/io/console/size.rb +23 -0
  779. data/vendor/bundle/ruby/3.2.0/gems/io-console-0.8.2/lib/io/console.so +0 -0
  780. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/LICENSE.txt +22 -0
  781. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/Makefile +269 -0
  782. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/adj_matrix.c +97 -0
  783. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/adj_matrix.h +22 -0
  784. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/codepoints.c +61 -0
  785. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/codepoints.h +13 -0
  786. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/extconf.rb +5 -0
  787. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/jaro.c +121 -0
  788. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/jaro.h +17 -0
  789. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler/jaro_winkler.c +77 -0
  790. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/lib/jaro_winkler/adjusting_table.rb +14 -0
  791. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/lib/jaro_winkler/jaro_winkler_ext.so +0 -0
  792. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/lib/jaro_winkler/jaro_winkler_pure.rb +135 -0
  793. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/lib/jaro_winkler/version.rb +5 -0
  794. data/vendor/bundle/ruby/3.2.0/gems/jaro_winkler-1.5.6/lib/jaro_winkler.rb +15 -0
  795. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/BSDL +22 -0
  796. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/CHANGES.md +798 -0
  797. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/COPYING +56 -0
  798. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/LEGAL +20 -0
  799. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/README.md +308 -0
  800. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/fbuffer/fbuffer.h +259 -0
  801. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/generator/Makefile +269 -0
  802. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/generator/extconf.rb +19 -0
  803. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/generator/generator.c +1997 -0
  804. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/json.h +179 -0
  805. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/parser/Makefile +269 -0
  806. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/parser/extconf.rb +53 -0
  807. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/parser/parser.c +2827 -0
  808. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/simd/conf.rb +24 -0
  809. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/simd/simd.h +208 -0
  810. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/vendor/fast_float_parser.h +814 -0
  811. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/vendor/fpconv.c +480 -0
  812. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/ext/json/ext/vendor/jeaiii-ltoa.h +267 -0
  813. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/json.gemspec +62 -0
  814. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/bigdecimal.rb +58 -0
  815. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/complex.rb +51 -0
  816. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/core.rb +13 -0
  817. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/date.rb +54 -0
  818. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/date_time.rb +67 -0
  819. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/exception.rb +49 -0
  820. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/ostruct.rb +54 -0
  821. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/range.rb +54 -0
  822. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/rational.rb +49 -0
  823. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/regexp.rb +48 -0
  824. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/set.rb +48 -0
  825. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/string.rb +35 -0
  826. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/struct.rb +52 -0
  827. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/symbol.rb +52 -0
  828. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/add/time.rb +52 -0
  829. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/common.rb +1173 -0
  830. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/ext/generator/state.rb +103 -0
  831. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/ext/generator.so +0 -0
  832. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/ext/parser.so +0 -0
  833. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/ext.rb +45 -0
  834. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/generic_object.rb +67 -0
  835. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/truffle_ruby/generator.rb +755 -0
  836. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json/version.rb +5 -0
  837. data/vendor/bundle/ruby/3.2.0/gems/json-2.20.0/lib/json.rb +689 -0
  838. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/.document +4 -0
  839. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/.rdoc_options +3 -0
  840. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/BSDL +22 -0
  841. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/COPYING +56 -0
  842. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/README.md +104 -0
  843. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/errors.rb +9 -0
  844. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/formatter.rb +36 -0
  845. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/log_device.rb +265 -0
  846. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/period.rb +47 -0
  847. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/severity.rb +38 -0
  848. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger/version.rb +5 -0
  849. data/vendor/bundle/ruby/3.2.0/gems/logger-1.7.0/lib/logger.rb +789 -0
  850. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/.gemtest +0 -0
  851. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/.yardopts +1 -0
  852. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/CHANGELOG.md +15 -0
  853. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/Gemfile +6 -0
  854. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/LICENSE +22 -0
  855. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/README.markdown +101 -0
  856. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/Rakefile +81 -0
  857. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/lib/method_source/code_helpers.rb +154 -0
  858. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/lib/method_source/source_location.rb +138 -0
  859. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/lib/method_source/version.rb +3 -0
  860. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/lib/method_source.rb +177 -0
  861. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/method_source.gemspec +19 -0
  862. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/spec/method_source/code_helpers_spec.rb +43 -0
  863. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/spec/method_source_spec.rb +157 -0
  864. data/vendor/bundle/ruby/3.2.0/gems/method_source-1.1.0/spec/spec_helper.rb +107 -0
  865. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/changelog.md +14 -0
  866. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/composite_io.rb +17 -0
  867. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post/composite_read_io.rb +91 -0
  868. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post/multipartable.rb +70 -0
  869. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post/parts.rb +148 -0
  870. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post/upload_io.rb +64 -0
  871. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post/version.rb +11 -0
  872. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart/post.rb +8 -0
  873. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipart_post.rb +11 -0
  874. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/multipartable.rb +19 -0
  875. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/net/http/post/multipart.rb +28 -0
  876. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/lib/parts.rb +25 -0
  877. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/license.md +58 -0
  878. data/vendor/bundle/ruby/3.2.0/gems/multipart-post-2.4.1/readme.md +170 -0
  879. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/.document +5 -0
  880. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/BSDL +22 -0
  881. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/COPYING +56 -0
  882. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/README.md +93 -0
  883. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/doc/net-http/examples.rdoc +31 -0
  884. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/doc/net-http/included_getters.rdoc +3 -0
  885. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/exceptions.rb +35 -0
  886. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/generic_request.rb +429 -0
  887. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/header.rb +985 -0
  888. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/proxy_delta.rb +17 -0
  889. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/request.rb +88 -0
  890. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/requests.rb +444 -0
  891. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/response.rb +739 -0
  892. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/responses.rb +1242 -0
  893. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http/status.rb +84 -0
  894. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/http.rb +2608 -0
  895. data/vendor/bundle/ruby/3.2.0/gems/net-http-0.9.1/lib/net/https.rb +23 -0
  896. data/vendor/bundle/ruby/3.2.0/gems/parallel-1.28.0/MIT-LICENSE.txt +20 -0
  897. data/vendor/bundle/ruby/3.2.0/gems/parallel-1.28.0/lib/parallel/version.rb +4 -0
  898. data/vendor/bundle/ruby/3.2.0/gems/parallel-1.28.0/lib/parallel.rb +719 -0
  899. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/LICENSE.txt +26 -0
  900. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/bin/ruby-parse +7 -0
  901. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/bin/ruby-rewrite +7 -0
  902. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/gauntlet_parser.rb +123 -0
  903. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/all.rb +17 -0
  904. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ast/node.rb +40 -0
  905. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ast/processor.rb +293 -0
  906. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/base.rb +294 -0
  907. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/builders/default.rb +2351 -0
  908. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/clobbering_error.rb +13 -0
  909. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/color.rb +32 -0
  910. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/context.rb +51 -0
  911. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/current.rb +146 -0
  912. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/current_arg_stack.rb +46 -0
  913. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/deprecation.rb +13 -0
  914. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/diagnostic/engine.rb +104 -0
  915. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/diagnostic.rb +163 -0
  916. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer/dedenter.rb +88 -0
  917. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer/explanation.rb +55 -0
  918. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer/literal.rb +284 -0
  919. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer/stack_state.rb +49 -0
  920. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer-F0.rb +12931 -0
  921. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer-F1.rb +14884 -0
  922. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/lexer-strings.rb +5433 -0
  923. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/macruby.rb +9634 -0
  924. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/max_numparam_stack.rb +56 -0
  925. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/messages.rb +125 -0
  926. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/meta.rb +48 -0
  927. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/rewriter.rb +105 -0
  928. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby18.rb +9272 -0
  929. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby19.rb +9558 -0
  930. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby20.rb +10229 -0
  931. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby21.rb +10203 -0
  932. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby22.rb +10302 -0
  933. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby23.rb +10322 -0
  934. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby24.rb +10454 -0
  935. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby25.rb +10374 -0
  936. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby26.rb +10352 -0
  937. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby27.rb +11948 -0
  938. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby30.rb +12244 -0
  939. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby31.rb +12717 -0
  940. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby32.rb +12705 -0
  941. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby33.rb +12590 -0
  942. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/ruby34.rb +12597 -0
  943. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/rubymotion.rb +9515 -0
  944. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/runner/ruby_parse.rb +157 -0
  945. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/runner/ruby_rewrite.rb +101 -0
  946. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/runner.rb +299 -0
  947. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/buffer.rb +369 -0
  948. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/comment/associator.rb +233 -0
  949. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/comment.rb +134 -0
  950. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/collection.rb +18 -0
  951. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/condition.rb +21 -0
  952. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/constant.rb +32 -0
  953. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/definition.rb +23 -0
  954. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/for.rb +19 -0
  955. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/heredoc.rb +19 -0
  956. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/index.rb +33 -0
  957. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/keyword.rb +20 -0
  958. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/method_definition.rb +25 -0
  959. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/objc_kwarg.rb +19 -0
  960. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/operator.rb +17 -0
  961. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/rescue_body.rb +21 -0
  962. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/send.rb +36 -0
  963. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/ternary.rb +18 -0
  964. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map/variable.rb +31 -0
  965. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/map.rb +186 -0
  966. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/range.rb +326 -0
  967. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/rewriter/action.rb +44 -0
  968. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/rewriter.rb +513 -0
  969. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/tree_rewriter/action.rb +243 -0
  970. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/source/tree_rewriter.rb +431 -0
  971. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/static_environment.rb +134 -0
  972. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/syntax_error.rb +21 -0
  973. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/tree_rewriter.rb +133 -0
  974. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/unknown_encoding_in_magic_comment_error.rb +15 -0
  975. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/variables_stack.rb +36 -0
  976. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser/version.rb +5 -0
  977. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/lib/parser.rb +91 -0
  978. data/vendor/bundle/ruby/3.2.0/gems/parser-3.3.11.1/parser.gemspec +43 -0
  979. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/CHANGELOG.md +1211 -0
  980. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/LICENSE +25 -0
  981. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/README.md +469 -0
  982. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/bin/pry +13 -0
  983. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/basic_object.rb +10 -0
  984. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/block_command.rb +22 -0
  985. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/class_command.rb +194 -0
  986. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/cli.rb +211 -0
  987. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/code/code_file.rb +114 -0
  988. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/code/code_range.rb +73 -0
  989. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/code/loc.rb +105 -0
  990. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/code.rb +357 -0
  991. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/code_object.rb +197 -0
  992. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/color_printer.rb +66 -0
  993. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/command.rb +520 -0
  994. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/command_set.rb +418 -0
  995. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/command_state.rb +36 -0
  996. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/amend_line.rb +103 -0
  997. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/bang.rb +24 -0
  998. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/bang_pry.rb +21 -0
  999. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cat/abstract_formatter.rb +32 -0
  1000. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cat/exception_formatter.rb +90 -0
  1001. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cat/file_formatter.rb +77 -0
  1002. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cat/input_expression_formatter.rb +48 -0
  1003. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cat.rb +70 -0
  1004. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/cd.rb +48 -0
  1005. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/change_inspector.rb +34 -0
  1006. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/change_prompt.rb +51 -0
  1007. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/clear_screen.rb +20 -0
  1008. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/code_collector.rb +182 -0
  1009. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/disable_pry.rb +31 -0
  1010. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/easter_eggs.rb +101 -0
  1011. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/edit/exception_patcher.rb +29 -0
  1012. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/edit/file_and_line_locator.rb +47 -0
  1013. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/edit.rb +225 -0
  1014. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/exit.rb +47 -0
  1015. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/exit_all.rb +33 -0
  1016. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/exit_program.rb +27 -0
  1017. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/find_method.rb +199 -0
  1018. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/fix_indent.rb +23 -0
  1019. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/help.rb +171 -0
  1020. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/hist.rb +182 -0
  1021. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/import_set.rb +27 -0
  1022. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/jump_to.rb +33 -0
  1023. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/list_inspectors.rb +42 -0
  1024. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/config.rb +54 -0
  1025. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/constants.rb +75 -0
  1026. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/formatter.rb +55 -0
  1027. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/globals.rb +50 -0
  1028. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/grep.rb +23 -0
  1029. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/instance_vars.rb +40 -0
  1030. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/interrogatable.rb +24 -0
  1031. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/jruby_hacks.rb +55 -0
  1032. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/local_names.rb +37 -0
  1033. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/local_vars.rb +47 -0
  1034. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/ls_entity.rb +65 -0
  1035. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/methods.rb +55 -0
  1036. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/methods_helper.rb +50 -0
  1037. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls/self_methods.rb +34 -0
  1038. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ls.rb +114 -0
  1039. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/nesting.rb +29 -0
  1040. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/play.rb +113 -0
  1041. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/pry_backtrace.rb +30 -0
  1042. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/pry_version.rb +21 -0
  1043. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/raise_up.rb +38 -0
  1044. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/reload_code.rb +74 -0
  1045. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/reset.rb +22 -0
  1046. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/ri.rb +75 -0
  1047. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/save_file.rb +63 -0
  1048. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/shell_command.rb +75 -0
  1049. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/shell_mode.rb +30 -0
  1050. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/show_doc.rb +84 -0
  1051. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/show_info.rb +234 -0
  1052. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/show_input.rb +22 -0
  1053. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/show_source.rb +57 -0
  1054. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/stat.rb +44 -0
  1055. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/switch_to.rb +29 -0
  1056. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/toggle_color.rb +28 -0
  1057. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/watch_expression/expression.rb +43 -0
  1058. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/watch_expression.rb +108 -0
  1059. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/whereami.rb +205 -0
  1060. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/commands/wtf.rb +95 -0
  1061. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/config/attributable.rb +22 -0
  1062. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/config/lazy_value.rb +29 -0
  1063. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/config/memoized_value.rb +34 -0
  1064. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/config/value.rb +24 -0
  1065. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/config.rb +321 -0
  1066. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/control_d_handler.rb +28 -0
  1067. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/core_extensions.rb +144 -0
  1068. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/editor.rb +157 -0
  1069. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/env.rb +18 -0
  1070. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/exception_handler.rb +48 -0
  1071. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/exceptions.rb +73 -0
  1072. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/forwardable.rb +27 -0
  1073. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/base_helpers.rb +71 -0
  1074. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/command_helpers.rb +146 -0
  1075. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/documentation_helpers.rb +84 -0
  1076. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/options_helpers.rb +34 -0
  1077. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/platform.rb +55 -0
  1078. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/table.rb +121 -0
  1079. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers/text.rb +118 -0
  1080. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/helpers.rb +8 -0
  1081. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/history.rb +153 -0
  1082. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/hooks.rb +180 -0
  1083. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/indent.rb +414 -0
  1084. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/input/simple_stdio.rb +13 -0
  1085. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/input_completer.rb +283 -0
  1086. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/input_lock.rb +129 -0
  1087. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/inspector.rb +39 -0
  1088. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/last_exception.rb +61 -0
  1089. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/method/disowned.rb +67 -0
  1090. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/method/patcher.rb +131 -0
  1091. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/method/weird_method_locator.rb +222 -0
  1092. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/method.rb +599 -0
  1093. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/object_path.rb +91 -0
  1094. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/output.rb +136 -0
  1095. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/pager.rb +249 -0
  1096. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/prompt.rb +214 -0
  1097. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/pry_class.rb +371 -0
  1098. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/pry_instance.rb +663 -0
  1099. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/repl.rb +326 -0
  1100. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/repl_file_loader.rb +79 -0
  1101. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/ring.rb +89 -0
  1102. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/slop/LICENSE +20 -0
  1103. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/slop/commands.rb +190 -0
  1104. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/slop/option.rb +210 -0
  1105. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/slop.rb +672 -0
  1106. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/syntax_highlighter.rb +26 -0
  1107. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/system_command_handler.rb +17 -0
  1108. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable/evalable.rb +24 -0
  1109. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable/mockable.rb +22 -0
  1110. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable/pry_tester.rb +88 -0
  1111. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable/utility.rb +34 -0
  1112. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable/variables.rb +52 -0
  1113. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/testable.rb +68 -0
  1114. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/version.rb +5 -0
  1115. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/warning.rb +20 -0
  1116. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/wrapped_module/candidate.rb +145 -0
  1117. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry/wrapped_module.rb +382 -0
  1118. data/vendor/bundle/ruby/3.2.0/gems/pry-0.16.0/lib/pry.rb +148 -0
  1119. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/CHANGELOG.md +252 -0
  1120. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/LICENSE +20 -0
  1121. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/README.md +189 -0
  1122. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/byebug/processors/pry_processor.rb +158 -0
  1123. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry/byebug/breakpoints.rb +167 -0
  1124. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/base.rb +29 -0
  1125. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/cli.rb +6 -0
  1126. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/backtrace.rb +31 -0
  1127. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/breakpoint.rb +137 -0
  1128. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/continue.rb +43 -0
  1129. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/down.rb +35 -0
  1130. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/exit_all.rb +18 -0
  1131. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/finish.rb +28 -0
  1132. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/frame.rb +35 -0
  1133. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/next.rb +39 -0
  1134. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/step.rb +34 -0
  1135. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands/up.rb +35 -0
  1136. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/commands.rb +12 -0
  1137. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/control_d_handler.rb +9 -0
  1138. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/helpers/breakpoints.rb +82 -0
  1139. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/helpers/location.rb +24 -0
  1140. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/helpers/multiline.rb +23 -0
  1141. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/helpers/navigation.rb +19 -0
  1142. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/pry_ext.rb +20 -0
  1143. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/pry_remote_ext.rb +44 -0
  1144. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug/version.rb +8 -0
  1145. data/vendor/bundle/ruby/3.2.0/gems/pry-byebug-3.12.0/lib/pry-byebug.rb +4 -0
  1146. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/CONTRIBUTING.md +24 -0
  1147. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/LICENSE +21 -0
  1148. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/README.md +90 -0
  1149. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/Makefile +291 -0
  1150. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/depend +17 -0
  1151. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/extconf.rb +56 -0
  1152. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych.c +36 -0
  1153. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych.h +17 -0
  1154. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_emitter.c +589 -0
  1155. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_emitter.h +8 -0
  1156. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_parser.c +575 -0
  1157. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_parser.h +6 -0
  1158. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_to_ruby.c +42 -0
  1159. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_to_ruby.h +8 -0
  1160. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_yaml_tree.c +11 -0
  1161. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/ext/psych/psych_yaml_tree.h +8 -0
  1162. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/class_loader.rb +105 -0
  1163. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/coder.rb +95 -0
  1164. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/core_ext.rb +36 -0
  1165. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/exception.rb +28 -0
  1166. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/handler.rb +255 -0
  1167. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/handlers/document_stream.rb +23 -0
  1168. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/handlers/recorder.rb +40 -0
  1169. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/json/ruby_events.rb +20 -0
  1170. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/json/stream.rb +17 -0
  1171. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/json/tree_builder.rb +13 -0
  1172. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/json/yaml_events.rb +30 -0
  1173. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/alias.rb +21 -0
  1174. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/document.rb +63 -0
  1175. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/mapping.rb +59 -0
  1176. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/node.rb +76 -0
  1177. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/scalar.rb +70 -0
  1178. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/sequence.rb +84 -0
  1179. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes/stream.rb +40 -0
  1180. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/nodes.rb +78 -0
  1181. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/omap.rb +5 -0
  1182. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/parser.rb +65 -0
  1183. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/scalar_scanner.rb +142 -0
  1184. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/set.rb +5 -0
  1185. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/stream.rb +38 -0
  1186. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/streaming.rb +28 -0
  1187. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/syntax_error.rb +22 -0
  1188. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/tree_builder.rb +137 -0
  1189. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/versions.rb +10 -0
  1190. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/depth_first.rb +27 -0
  1191. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/emitter.rb +52 -0
  1192. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/json_tree.rb +25 -0
  1193. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/to_ruby.rb +479 -0
  1194. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/visitor.rb +34 -0
  1195. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors/yaml_tree.rb +626 -0
  1196. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/visitors.rb +7 -0
  1197. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych/y.rb +10 -0
  1198. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych.rb +794 -0
  1199. data/vendor/bundle/ruby/3.2.0/gems/psych-5.4.0/lib/psych.so +0 -0
  1200. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/BSDL +22 -0
  1201. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/COPYING +56 -0
  1202. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/ChangeLog +846 -0
  1203. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/README.ja.rdoc +58 -0
  1204. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/README.rdoc +60 -0
  1205. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/TODO +5 -0
  1206. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/bin/racc +320 -0
  1207. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/en/grammar.en.rdoc +218 -0
  1208. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/en/grammar2.en.rdoc +219 -0
  1209. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/command.ja.html +99 -0
  1210. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/debug.ja.rdoc +36 -0
  1211. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/grammar.ja.rdoc +348 -0
  1212. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/index.ja.html +10 -0
  1213. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/parser.ja.rdoc +125 -0
  1214. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/doc/ja/usage.ja.html +414 -0
  1215. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +269 -0
  1216. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/ext/racc/cparse/cparse.c +840 -0
  1217. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/ext/racc/cparse/extconf.rb +8 -0
  1218. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/compat.rb +33 -0
  1219. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  1220. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/debugflags.rb +60 -0
  1221. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/exception.rb +16 -0
  1222. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/grammar.rb +1191 -0
  1223. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/grammarfileparser.rb +667 -0
  1224. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/info.rb +18 -0
  1225. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/iset.rb +92 -0
  1226. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/logfilegenerator.rb +212 -0
  1227. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/parser-text.rb +644 -0
  1228. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/parser.rb +630 -0
  1229. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/parserfilegenerator.rb +473 -0
  1230. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/sourcetext.rb +35 -0
  1231. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/state.rb +976 -0
  1232. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/statetransitiontable.rb +311 -0
  1233. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc/static.rb +5 -0
  1234. data/vendor/bundle/ruby/3.2.0/gems/racc-1.8.1/lib/racc.rb +6 -0
  1235. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/Changelog.md +101 -0
  1236. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/LICENSE +20 -0
  1237. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/README.markdown +227 -0
  1238. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/color.rb +150 -0
  1239. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/ext/string.rb +64 -0
  1240. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/global.rb +25 -0
  1241. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/null_presenter.rb +100 -0
  1242. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/presenter.rb +144 -0
  1243. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/refinement.rb +14 -0
  1244. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/string_utils.rb +22 -0
  1245. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/version.rb +5 -0
  1246. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/wrapper.rb +22 -0
  1247. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow/x11_color_names.rb +153 -0
  1248. data/vendor/bundle/ruby/3.2.0/gems/rainbow-3.1.1/lib/rainbow.rb +13 -0
  1249. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/History.rdoc +2403 -0
  1250. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/MIT-LICENSE +21 -0
  1251. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/README.rdoc +155 -0
  1252. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +158 -0
  1253. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/example/Rakefile1 +38 -0
  1254. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/example/Rakefile2 +35 -0
  1255. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/example/a.c +6 -0
  1256. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/example/b.c +6 -0
  1257. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/example/main.c +11 -0
  1258. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/glossary.rdoc +42 -0
  1259. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/jamis.rb +592 -0
  1260. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/proto_rake.rdoc +127 -0
  1261. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/rake.1 +156 -0
  1262. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/rakefile.rdoc +622 -0
  1263. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/doc/rational.rdoc +151 -0
  1264. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake +27 -0
  1265. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/application.rb +831 -0
  1266. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/backtrace.rb +24 -0
  1267. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/clean.rb +78 -0
  1268. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/cloneable.rb +17 -0
  1269. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +107 -0
  1270. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/default_loader.rb +15 -0
  1271. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +195 -0
  1272. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/early_time.rb +22 -0
  1273. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/ext/core.rb +26 -0
  1274. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/ext/string.rb +176 -0
  1275. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +25 -0
  1276. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/file_list.rb +435 -0
  1277. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/file_task.rb +54 -0
  1278. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/file_utils.rb +134 -0
  1279. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +134 -0
  1280. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +57 -0
  1281. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +17 -0
  1282. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/late_time.rb +18 -0
  1283. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/linked_list.rb +112 -0
  1284. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +54 -0
  1285. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/multi_task.rb +14 -0
  1286. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/name_space.rb +38 -0
  1287. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/packagetask.rb +222 -0
  1288. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/phony.rb +16 -0
  1289. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/private_reader.rb +21 -0
  1290. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/promise.rb +100 -0
  1291. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +30 -0
  1292. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/rake_module.rb +67 -0
  1293. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +27 -0
  1294. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +20 -0
  1295. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/scope.rb +43 -0
  1296. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/task.rb +434 -0
  1297. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +8 -0
  1298. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +109 -0
  1299. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/task_manager.rb +331 -0
  1300. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/tasklib.rb +12 -0
  1301. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/testtask.rb +189 -0
  1302. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +49 -0
  1303. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +163 -0
  1304. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/trace_output.rb +23 -0
  1305. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/version.rb +10 -0
  1306. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake/win32.rb +51 -0
  1307. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/lib/rake.rb +71 -0
  1308. data/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/rake.gemspec +100 -0
  1309. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/BSDL +22 -0
  1310. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/COPYING +56 -0
  1311. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/README.md +94 -0
  1312. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/config.rb +378 -0
  1313. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/face.rb +199 -0
  1314. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/history.rb +76 -0
  1315. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/io/ansi.rb +310 -0
  1316. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/io/dumb.rb +120 -0
  1317. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/io/windows.rb +530 -0
  1318. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/io.rb +55 -0
  1319. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor/base.rb +37 -0
  1320. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor/composite.rb +17 -0
  1321. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor/emacs.rb +517 -0
  1322. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor/vi_command.rb +518 -0
  1323. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor/vi_insert.rb +517 -0
  1324. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_actor.rb +8 -0
  1325. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/key_stroke.rb +119 -0
  1326. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/kill_ring.rb +125 -0
  1327. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/line_editor.rb +2356 -0
  1328. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/unicode/east_asian_width.rb +1292 -0
  1329. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/unicode.rb +421 -0
  1330. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/version.rb +3 -0
  1331. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline.rb +527 -0
  1332. data/vendor/bundle/ruby/3.2.0/gems/reline-0.6.3/license_of_rb-readline +25 -0
  1333. data/vendor/bundle/ruby/3.2.0/gems/rspec-3.13.2/LICENSE.md +27 -0
  1334. data/vendor/bundle/ruby/3.2.0/gems/rspec-3.13.2/README.md +47 -0
  1335. data/vendor/bundle/ruby/3.2.0/gems/rspec-3.13.2/lib/rspec/version.rb +5 -0
  1336. data/vendor/bundle/ruby/3.2.0/gems/rspec-3.13.2/lib/rspec.rb +3 -0
  1337. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/.document +5 -0
  1338. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/.yardopts +8 -0
  1339. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/Changelog.md +2447 -0
  1340. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/LICENSE.md +26 -0
  1341. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/README.md +389 -0
  1342. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/exe/rspec +4 -0
  1343. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/autorun.rb +3 -0
  1344. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/backtrace_formatter.rb +65 -0
  1345. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/coordinator.rb +62 -0
  1346. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  1347. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/fork_runner.rb +140 -0
  1348. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/server.rb +61 -0
  1349. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/shell_command.rb +126 -0
  1350. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/shell_runner.rb +73 -0
  1351. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/bisect/utilities.rb +69 -0
  1352. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/configuration.rb +2419 -0
  1353. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/configuration_options.rb +240 -0
  1354. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/did_you_mean.rb +52 -0
  1355. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/drb.rb +120 -0
  1356. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/dsl.rb +98 -0
  1357. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/example.rb +666 -0
  1358. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/example_group.rb +912 -0
  1359. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/example_status_persister.rb +235 -0
  1360. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/filter_manager.rb +231 -0
  1361. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/flat_map.rb +20 -0
  1362. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  1363. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/base_formatter.rb +70 -0
  1364. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  1365. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  1366. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  1367. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/console_codes.rb +76 -0
  1368. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  1369. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  1370. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/exception_presenter.rb +553 -0
  1371. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  1372. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  1373. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/helpers.rb +118 -0
  1374. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/html_formatter.rb +153 -0
  1375. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/html_printer.rb +412 -0
  1376. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/html_snippet_extractor.rb +122 -0
  1377. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/json_formatter.rb +103 -0
  1378. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  1379. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  1380. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/protocol.rb +182 -0
  1381. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  1382. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  1383. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/formatters.rb +279 -0
  1384. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/hooks.rb +646 -0
  1385. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/invocations.rb +87 -0
  1386. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/memoized_helpers.rb +580 -0
  1387. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/metadata.rb +498 -0
  1388. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/metadata_filter.rb +255 -0
  1389. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  1390. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  1391. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  1392. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/mocking_adapters/null.rb +14 -0
  1393. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  1394. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  1395. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/notifications.rb +523 -0
  1396. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/option_parser.rb +325 -0
  1397. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/ordering.rb +208 -0
  1398. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/output_wrapper.rb +29 -0
  1399. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/pending.rb +157 -0
  1400. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/profiler.rb +34 -0
  1401. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/project_initializer/.rspec +1 -0
  1402. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/project_initializer/spec/spec_helper.rb +98 -0
  1403. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/project_initializer.rb +48 -0
  1404. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/rake_task.rb +190 -0
  1405. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/reporter.rb +266 -0
  1406. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/ruby_project.rb +53 -0
  1407. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/runner.rb +216 -0
  1408. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/sandbox.rb +37 -0
  1409. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/set.rb +54 -0
  1410. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/shared_context.rb +55 -0
  1411. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/shared_example_group.rb +271 -0
  1412. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/shell_escape.rb +49 -0
  1413. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  1414. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/version.rb +9 -0
  1415. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/warnings.rb +40 -0
  1416. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core/world.rb +287 -0
  1417. data/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.13.6/lib/rspec/core.rb +212 -0
  1418. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/.document +5 -0
  1419. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/.yardopts +6 -0
  1420. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/Changelog.md +1366 -0
  1421. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/LICENSE.md +25 -0
  1422. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/README.md +326 -0
  1423. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/block_snippet_extractor.rb +255 -0
  1424. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/configuration.rb +244 -0
  1425. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/expectation_target.rb +163 -0
  1426. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/fail_with.rb +39 -0
  1427. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/failure_aggregator.rb +236 -0
  1428. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/handler.rb +181 -0
  1429. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/minitest_integration.rb +58 -0
  1430. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/syntax.rb +132 -0
  1431. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations/version.rb +8 -0
  1432. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/expectations.rb +82 -0
  1433. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/aliased_matcher.rb +116 -0
  1434. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/all.rb +86 -0
  1435. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/base_matcher.rb +225 -0
  1436. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/be.rb +191 -0
  1437. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/be_between.rb +77 -0
  1438. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  1439. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  1440. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/be_within.rb +72 -0
  1441. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/change.rb +452 -0
  1442. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/compound.rb +293 -0
  1443. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/contain_exactly.rb +312 -0
  1444. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/count_expectation.rb +171 -0
  1445. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/cover.rb +24 -0
  1446. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/eq.rb +44 -0
  1447. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/eql.rb +38 -0
  1448. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/equal.rb +81 -0
  1449. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/exist.rb +90 -0
  1450. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/has.rb +194 -0
  1451. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  1452. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/include.rb +218 -0
  1453. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/match.rb +120 -0
  1454. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/operators.rb +128 -0
  1455. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/output.rb +207 -0
  1456. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/raise_error.rb +275 -0
  1457. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/respond_to.rb +200 -0
  1458. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/satisfy.rb +62 -0
  1459. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  1460. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/throw_symbol.rb +138 -0
  1461. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in/yield.rb +375 -0
  1462. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/built_in.rb +53 -0
  1463. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/composable.rb +171 -0
  1464. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/dsl.rb +546 -0
  1465. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/english_phrasing.rb +60 -0
  1466. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/fail_matchers.rb +42 -0
  1467. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/generated_descriptions.rb +41 -0
  1468. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/matcher_delegator.rb +61 -0
  1469. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/matcher_protocol.rb +105 -0
  1470. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers/multi_matcher_diff.rb +82 -0
  1471. data/vendor/bundle/ruby/3.2.0/gems/rspec-expectations-3.13.5/lib/rspec/matchers.rb +1046 -0
  1472. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/.document +5 -0
  1473. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/.yardopts +6 -0
  1474. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/Changelog.md +1351 -0
  1475. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/LICENSE.md +25 -0
  1476. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/README.md +465 -0
  1477. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/chain.rb +111 -0
  1478. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  1479. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  1480. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  1481. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  1482. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/proxy.rb +125 -0
  1483. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/recorder.rb +301 -0
  1484. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  1485. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  1486. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/any_instance.rb +11 -0
  1487. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/argument_list_matcher.rb +117 -0
  1488. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/argument_matchers.rb +366 -0
  1489. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/configuration.rb +212 -0
  1490. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/error_generator.rb +390 -0
  1491. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/example_methods.rb +434 -0
  1492. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  1493. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/marshal_extension.rb +41 -0
  1494. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  1495. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/matchers/have_received.rb +134 -0
  1496. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/matchers/receive.rb +134 -0
  1497. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  1498. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  1499. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/message_chain.rb +87 -0
  1500. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/message_expectation.rb +856 -0
  1501. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/method_double.rb +316 -0
  1502. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/method_reference.rb +214 -0
  1503. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/minitest_integration.rb +68 -0
  1504. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/mutate_const.rb +339 -0
  1505. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/object_reference.rb +149 -0
  1506. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/order_group.rb +92 -0
  1507. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/proxy.rb +517 -0
  1508. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/space.rb +238 -0
  1509. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/standalone.rb +3 -0
  1510. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/syntax.rb +325 -0
  1511. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/targets.rb +124 -0
  1512. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/test_double.rb +174 -0
  1513. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/verifying_double.rb +125 -0
  1514. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/verifying_message_expectation.rb +55 -0
  1515. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/verifying_proxy.rb +221 -0
  1516. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks/version.rb +9 -0
  1517. data/vendor/bundle/ruby/3.2.0/gems/rspec-mocks-3.13.8/lib/rspec/mocks.rb +133 -0
  1518. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/Changelog.md +444 -0
  1519. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/LICENSE.md +23 -0
  1520. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/README.md +40 -0
  1521. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/caller_filter.rb +85 -0
  1522. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/comparable_version.rb +48 -0
  1523. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/differ.rb +216 -0
  1524. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/directory_maker.rb +65 -0
  1525. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/encoded_string.rb +163 -0
  1526. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/fuzzy_matcher.rb +53 -0
  1527. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/hunk_generator.rb +49 -0
  1528. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/matcher_definition.rb +44 -0
  1529. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/method_signature_verifier.rb +467 -0
  1530. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/mutex.rb +75 -0
  1531. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/object_formatter.rb +279 -0
  1532. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/recursive_const_methods.rb +78 -0
  1533. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/reentrant_mutex.rb +80 -0
  1534. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/ruby_features.rb +221 -0
  1535. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/source/location.rb +23 -0
  1536. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/source/node.rb +112 -0
  1537. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/source/token.rb +96 -0
  1538. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/source.rb +87 -0
  1539. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/deprecation_helpers.rb +50 -0
  1540. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/diff_helpers.rb +45 -0
  1541. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/formatting_support.rb +11 -0
  1542. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/in_sub_process.rb +73 -0
  1543. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/library_wide_checks.rb +152 -0
  1544. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/shell_out.rb +115 -0
  1545. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/stderr_splitter.rb +77 -0
  1546. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/string_matcher.rb +47 -0
  1547. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/with_isolated_directory.rb +15 -0
  1548. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec/with_isolated_stderr.rb +15 -0
  1549. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/spec.rb +84 -0
  1550. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/version.rb +9 -0
  1551. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/warnings.rb +41 -0
  1552. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support/with_keywords_when_needed.rb +35 -0
  1553. data/vendor/bundle/ruby/3.2.0/gems/rspec-support-3.13.7/lib/rspec/support.rb +163 -0
  1554. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/LICENSE.txt +20 -0
  1555. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/README.md +221 -0
  1556. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/assets/logo.png +0 -0
  1557. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/assets/output.html.erb +261 -0
  1558. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/bin/console +9 -0
  1559. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/bin/setup +7 -0
  1560. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/config/default.yml +4408 -0
  1561. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/exe/rubocop +17 -0
  1562. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/builder.rb +75 -0
  1563. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/and_node.rb +29 -0
  1564. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/args_node.rb +29 -0
  1565. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/array_node.rb +57 -0
  1566. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/block_node.rb +115 -0
  1567. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/break_node.rb +17 -0
  1568. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/case_node.rb +56 -0
  1569. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/def_node.rb +71 -0
  1570. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/defined_node.rb +17 -0
  1571. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/ensure_node.rb +17 -0
  1572. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/for_node.rb +53 -0
  1573. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/hash_node.rb +109 -0
  1574. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/if_node.rb +175 -0
  1575. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/keyword_splat_node.rb +45 -0
  1576. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
  1577. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/binary_operator_node.rb +43 -0
  1578. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/collection_node.rb +15 -0
  1579. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/conditional_node.rb +45 -0
  1580. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/hash_element_node.rb +125 -0
  1581. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +251 -0
  1582. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +114 -0
  1583. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/modifier_node.rb +17 -0
  1584. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/parameterized_node.rb +61 -0
  1585. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +35 -0
  1586. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/or_node.rb +29 -0
  1587. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/pair_node.rb +63 -0
  1588. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/range_node.rb +11 -0
  1589. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/regexp_node.rb +35 -0
  1590. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/resbody_node.rb +17 -0
  1591. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/retry_node.rb +17 -0
  1592. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/send_node.rb +13 -0
  1593. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/str_node.rb +16 -0
  1594. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/super_node.rb +21 -0
  1595. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/symbol_node.rb +12 -0
  1596. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/until_node.rb +35 -0
  1597. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/when_node.rb +53 -0
  1598. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/while_node.rb +35 -0
  1599. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node/yield_node.rb +21 -0
  1600. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/node.rb +642 -0
  1601. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/sexp.rb +16 -0
  1602. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/ast/traversal.rb +183 -0
  1603. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cached_data.rb +58 -0
  1604. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cli.rb +307 -0
  1605. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/comment_config.rb +200 -0
  1606. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/config.rb +716 -0
  1607. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/config_loader.rb +214 -0
  1608. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/config_loader_resolver.rb +198 -0
  1609. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/config_store.rb +48 -0
  1610. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/autocorrect_logic.rb +33 -0
  1611. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/badge.rb +73 -0
  1612. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/bundler/duplicated_gem.rb +73 -0
  1613. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/bundler/gem_comment.rb +64 -0
  1614. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/bundler/insecure_protocol_source.rb +69 -0
  1615. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/bundler/ordered_gems.rb +73 -0
  1616. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/commissioner.rb +119 -0
  1617. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/cop.rb +244 -0
  1618. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/corrector.rb +172 -0
  1619. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/alignment_corrector.rb +120 -0
  1620. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/condition_corrector.rb +28 -0
  1621. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/each_to_for_corrector.rb +53 -0
  1622. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/empty_line_corrector.rb +26 -0
  1623. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/for_to_each_corrector.rb +73 -0
  1624. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +136 -0
  1625. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/line_break_corrector.rb +61 -0
  1626. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +68 -0
  1627. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +44 -0
  1628. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/parentheses_corrector.rb +31 -0
  1629. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/percent_literal_corrector.rb +117 -0
  1630. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/punctuation_corrector.rb +29 -0
  1631. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/space_corrector.rb +49 -0
  1632. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/string_literal_corrector.rb +25 -0
  1633. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/correctors/unused_arg_corrector.rb +31 -0
  1634. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/force.rb +42 -0
  1635. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/gemspec/duplicated_assignment.rb +104 -0
  1636. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/gemspec/ordered_dependencies.rb +107 -0
  1637. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/gemspec/required_ruby_version.rb +85 -0
  1638. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/generator/configuration_injector.rb +61 -0
  1639. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/generator/require_file_injector.rb +78 -0
  1640. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/generator.rb +217 -0
  1641. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/ignored_node.rb +38 -0
  1642. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/node_destructuring.rb +46 -0
  1643. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +44 -0
  1644. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +54 -0
  1645. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +61 -0
  1646. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +73 -0
  1647. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +52 -0
  1648. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/internal_affairs.rb +8 -0
  1649. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/access_modifier_indentation.rb +109 -0
  1650. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/align_array.rb +39 -0
  1651. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/align_hash.rb +315 -0
  1652. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/align_parameters.rb +94 -0
  1653. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/block_alignment.rb +244 -0
  1654. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/block_end_newline.rb +63 -0
  1655. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/case_indentation.rb +161 -0
  1656. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/class_structure.rb +340 -0
  1657. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +126 -0
  1658. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +203 -0
  1659. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/comment_indentation.rb +144 -0
  1660. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/condition_position.rb +56 -0
  1661. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/def_end_alignment.rb +74 -0
  1662. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/dot_position.rb +105 -0
  1663. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/else_alignment.rb +134 -0
  1664. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_comment.rb +160 -0
  1665. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +142 -0
  1666. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +64 -0
  1667. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_line_between_defs.rb +151 -0
  1668. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines.rb +76 -0
  1669. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +146 -0
  1670. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +99 -0
  1671. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +45 -0
  1672. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +39 -0
  1673. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +91 -0
  1674. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +136 -0
  1675. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +45 -0
  1676. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +63 -0
  1677. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/end_alignment.rb +189 -0
  1678. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/end_of_line.rb +87 -0
  1679. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/extra_spacing.rb +246 -0
  1680. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/first_array_element_line_break.rb +45 -0
  1681. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/first_hash_element_line_break.rb +37 -0
  1682. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/first_method_argument_line_break.rb +54 -0
  1683. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +46 -0
  1684. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/first_parameter_indentation.rb +244 -0
  1685. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indent_array.rb +167 -0
  1686. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indent_assignment.rb +46 -0
  1687. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indent_hash.rb +184 -0
  1688. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indent_heredoc.rb +294 -0
  1689. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indentation_consistency.rb +201 -0
  1690. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/indentation_width.rb +364 -0
  1691. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/initial_indentation.rb +59 -0
  1692. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/leading_blank_lines.rb +53 -0
  1693. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/leading_comment_space.rb +60 -0
  1694. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +118 -0
  1695. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_assignment_layout.rb +95 -0
  1696. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_block_layout.rb +124 -0
  1697. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +122 -0
  1698. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +134 -0
  1699. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +222 -0
  1700. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +131 -0
  1701. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/multiline_operation_indentation.rb +114 -0
  1702. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +175 -0
  1703. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_after_colon.rb +47 -0
  1704. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_after_comma.rb +35 -0
  1705. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_after_method_name.rb +42 -0
  1706. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_after_not.rb +40 -0
  1707. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_after_semicolon.rb +32 -0
  1708. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_around_block_parameters.rb +165 -0
  1709. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +92 -0
  1710. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_around_keyword.rb +232 -0
  1711. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_around_operators.rb +163 -0
  1712. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_before_block_braces.rb +119 -0
  1713. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_before_comma.rb +31 -0
  1714. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_before_comment.rb +35 -0
  1715. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_before_first_arg.rb +67 -0
  1716. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_before_semicolon.rb +27 -0
  1717. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_in_lambda_literal.rb +94 -0
  1718. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +228 -0
  1719. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +53 -0
  1720. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_block_braces.rb +229 -0
  1721. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +207 -0
  1722. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_parens.rb +113 -0
  1723. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +65 -0
  1724. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_range_literal.rb +63 -0
  1725. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +151 -0
  1726. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +81 -0
  1727. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/tab.rb +87 -0
  1728. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/trailing_blank_lines.rb +113 -0
  1729. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/layout/trailing_whitespace.rb +61 -0
  1730. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ambiguous_block_association.rb +62 -0
  1731. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ambiguous_operator.rb +55 -0
  1732. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +43 -0
  1733. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/assignment_in_condition.rb +84 -0
  1734. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/big_decimal_new.rb +44 -0
  1735. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/boolean_symbol.rb +38 -0
  1736. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/circular_argument_reference.rb +72 -0
  1737. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/debugger.rb +79 -0
  1738. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/deprecated_class_methods.rb +111 -0
  1739. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +81 -0
  1740. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/duplicate_case_condition.rb +53 -0
  1741. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/duplicate_methods.rb +241 -0
  1742. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/duplicated_key.rb +38 -0
  1743. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/each_with_object_argument.rb +42 -0
  1744. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/else_layout.rb +66 -0
  1745. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/empty_ensure.rb +60 -0
  1746. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/empty_expression.rb +42 -0
  1747. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/empty_interpolation.rb +36 -0
  1748. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/empty_when.rb +38 -0
  1749. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/end_in_method.rb +40 -0
  1750. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ensure_return.rb +46 -0
  1751. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/erb_new_arguments.rb +107 -0
  1752. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/flip_flop.rb +32 -0
  1753. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/float_out_of_range.rb +35 -0
  1754. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/format_parameter_mismatch.rb +190 -0
  1755. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/handle_exceptions.rb +56 -0
  1756. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/implicit_string_concatenation.rb +101 -0
  1757. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ineffective_access_modifier.rb +127 -0
  1758. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/inherit_exception.rb +80 -0
  1759. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/interpolation_check.rb +40 -0
  1760. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/literal_as_condition.rb +138 -0
  1761. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/literal_in_interpolation.rb +82 -0
  1762. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/loop.rb +63 -0
  1763. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +84 -0
  1764. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/multiple_compare.rb +48 -0
  1765. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/nested_method_definition.rb +104 -0
  1766. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/nested_percent_literal.rb +51 -0
  1767. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/next_without_accumulator.rb +50 -0
  1768. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +85 -0
  1769. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/number_conversion.rb +59 -0
  1770. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/ordered_magic_comments.rb +86 -0
  1771. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +64 -0
  1772. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/percent_string_array.rb +73 -0
  1773. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/percent_symbol_array.rb +69 -0
  1774. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/rand_one.rb +45 -0
  1775. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/redundant_with_index.rb +82 -0
  1776. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/redundant_with_object.rb +83 -0
  1777. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/regexp_as_condition.rb +29 -0
  1778. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/require_parentheses.rb +66 -0
  1779. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/rescue_exception.rb +46 -0
  1780. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/rescue_type.rb +94 -0
  1781. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/return_in_void_context.rb +74 -0
  1782. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/safe_navigation_chain.rb +69 -0
  1783. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/safe_navigation_consistency.rb +94 -0
  1784. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +38 -0
  1785. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/script_permission.rb +70 -0
  1786. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/shadowed_argument.rb +182 -0
  1787. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/shadowed_exception.rb +178 -0
  1788. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +53 -0
  1789. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +59 -0
  1790. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/syntax.rb +59 -0
  1791. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/to_json.rb +38 -0
  1792. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +62 -0
  1793. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unified_integer.rb +43 -0
  1794. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unneeded_cop_disable_directive.rb +263 -0
  1795. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unneeded_cop_enable_directive.rb +116 -0
  1796. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unneeded_require_statement.rb +50 -0
  1797. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +167 -0
  1798. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unreachable_code.rb +99 -0
  1799. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unused_block_argument.rb +149 -0
  1800. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/unused_method_argument.rb +68 -0
  1801. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/uri_escape_unescape.rb +76 -0
  1802. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/uri_regexp.rb +73 -0
  1803. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/useless_access_modifier.rb +240 -0
  1804. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/useless_assignment.rb +133 -0
  1805. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/useless_comparison.rb +28 -0
  1806. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/useless_else_without_rescue.rb +46 -0
  1807. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/useless_setter_call.rb +165 -0
  1808. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/lint/void.rb +170 -0
  1809. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/message_annotator.rb +119 -0
  1810. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/abc_size.rb +24 -0
  1811. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/block_length.rb +50 -0
  1812. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/block_nesting.rb +65 -0
  1813. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/class_length.rb +36 -0
  1814. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +32 -0
  1815. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/line_length.rb +204 -0
  1816. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/method_length.rb +36 -0
  1817. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/module_length.rb +36 -0
  1818. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/parameter_lists.rb +54 -0
  1819. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/perceived_complexity.rb +62 -0
  1820. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +67 -0
  1821. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/alignment.rb +74 -0
  1822. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/annotation_comment.rb +37 -0
  1823. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/array_hash_indentation.rb +85 -0
  1824. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/array_min_size.rb +59 -0
  1825. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/array_syntax.rb +17 -0
  1826. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/check_assignment.rb +44 -0
  1827. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/classish_length.rb +37 -0
  1828. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/code_length.rb +38 -0
  1829. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/configurable_enforced_style.rb +98 -0
  1830. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/configurable_formatting.rb +47 -0
  1831. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/configurable_max.rb +23 -0
  1832. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/configurable_naming.rb +16 -0
  1833. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/configurable_numbering.rb +17 -0
  1834. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/def_node.rb +33 -0
  1835. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/documentation_comment.rb +54 -0
  1836. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/duplication.rb +46 -0
  1837. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/empty_lines_around_body.rb +172 -0
  1838. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/empty_parameter.rb +24 -0
  1839. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/end_keyword_alignment.rb +67 -0
  1840. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/enforce_superclass.rb +30 -0
  1841. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/first_element_line_break.rb +46 -0
  1842. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/frozen_string_literal.rb +54 -0
  1843. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/hash_alignment.rb +143 -0
  1844. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/heredoc.rb +32 -0
  1845. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/ignored_methods.rb +19 -0
  1846. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/ignored_pattern.rb +29 -0
  1847. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/integer_node.rb +14 -0
  1848. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/match_range.rb +26 -0
  1849. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/method_complexity.rb +56 -0
  1850. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/method_preference.rb +31 -0
  1851. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/min_body_length.rb +21 -0
  1852. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +255 -0
  1853. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +141 -0
  1854. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/negative_conditional.rb +32 -0
  1855. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/nil_methods.rb +25 -0
  1856. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/on_normal_if_unless.rb +14 -0
  1857. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/ordered_gem_node.rb +56 -0
  1858. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/parentheses.rb +17 -0
  1859. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/parser_diagnostic.rb +37 -0
  1860. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/percent_array.rb +52 -0
  1861. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/percent_literal.rb +38 -0
  1862. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/preceding_following_alignment.rb +94 -0
  1863. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/preferred_delimiters.rb +53 -0
  1864. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/range_help.rb +117 -0
  1865. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/rescue_node.rb +23 -0
  1866. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/safe_assignment.rb +23 -0
  1867. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/safe_mode.rb +22 -0
  1868. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/space_after_punctuation.rb +55 -0
  1869. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/space_before_punctuation.rb +49 -0
  1870. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/statement_modifier.rb +68 -0
  1871. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/string_help.rb +35 -0
  1872. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/string_literals_help.rb +23 -0
  1873. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/surrounding_space.rb +144 -0
  1874. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/target_rails_version.rb +16 -0
  1875. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/target_ruby_version.rb +16 -0
  1876. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/too_many_lines.rb +39 -0
  1877. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/trailing_body.rb +26 -0
  1878. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/trailing_comma.rb +216 -0
  1879. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/uncommunicative_name.rb +106 -0
  1880. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/unused_argument.rb +33 -0
  1881. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/accessor_method_name.rb +55 -0
  1882. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/ascii_identifiers.rb +72 -0
  1883. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +43 -0
  1884. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/class_and_module_camel_case.rb +33 -0
  1885. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/constant_name.rb +81 -0
  1886. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/file_name.rb +205 -0
  1887. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +62 -0
  1888. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +55 -0
  1889. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +171 -0
  1890. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/method_name.rb +42 -0
  1891. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/predicate_name.rb +108 -0
  1892. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/uncommunicative_block_param_name.rb +49 -0
  1893. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/uncommunicative_method_param_name.rb +58 -0
  1894. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/variable_name.rb +51 -0
  1895. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/naming/variable_number.rb +61 -0
  1896. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/offense.rb +194 -0
  1897. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/caller.rb +69 -0
  1898. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/case_when_splat.rb +177 -0
  1899. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/casecmp.rb +108 -0
  1900. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/chain_array_allocation.rb +78 -0
  1901. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/compare_with_block.rb +122 -0
  1902. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/count.rb +102 -0
  1903. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/detect.rb +110 -0
  1904. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/double_start_end_with.rb +94 -0
  1905. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/end_with.rb +56 -0
  1906. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/fixed_size.rb +97 -0
  1907. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/flat_map.rb +78 -0
  1908. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/inefficient_hash_search.rb +99 -0
  1909. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/lstrip_rstrip.rb +46 -0
  1910. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/open_struct.rb +46 -0
  1911. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/range_include.rb +50 -0
  1912. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/redundant_block_call.rb +93 -0
  1913. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/redundant_match.rb +56 -0
  1914. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/redundant_merge.rb +183 -0
  1915. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/redundant_sort_by.rb +50 -0
  1916. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/regexp_match.rb +265 -0
  1917. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/reverse_each.rb +42 -0
  1918. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/sample.rb +145 -0
  1919. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/size.rb +77 -0
  1920. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/start_with.rb +59 -0
  1921. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/string_replacement.rb +173 -0
  1922. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/times_map.rb +71 -0
  1923. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/unfreeze_string.rb +50 -0
  1924. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/unneeded_sort.rb +165 -0
  1925. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/performance/uri_default_parser.rb +47 -0
  1926. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/action_filter.rb +117 -0
  1927. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/active_record_aliases.rb +48 -0
  1928. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/active_support_aliases.rb +69 -0
  1929. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/application_job.rb +40 -0
  1930. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/application_record.rb +40 -0
  1931. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/assert_not.rb +44 -0
  1932. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/belongs_to.rb +120 -0
  1933. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/blank.rb +158 -0
  1934. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/bulk_change_table.rb +289 -0
  1935. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/create_table_with_timestamps.rb +91 -0
  1936. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/date.rb +156 -0
  1937. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/delegate.rb +135 -0
  1938. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/delegate_allow_blank.rb +51 -0
  1939. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/dynamic_find_by.rb +91 -0
  1940. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/enum_uniqueness.rb +45 -0
  1941. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/environment_comparison.rb +66 -0
  1942. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/exit.rb +67 -0
  1943. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/file_path.rb +108 -0
  1944. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/find_by.rb +55 -0
  1945. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/find_each.rb +52 -0
  1946. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +25 -0
  1947. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +106 -0
  1948. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/http_positional_arguments.rb +117 -0
  1949. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/http_status.rb +186 -0
  1950. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +94 -0
  1951. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/inverse_of.rb +246 -0
  1952. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +149 -0
  1953. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/link_to_blank.rb +90 -0
  1954. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/not_null_column.rb +67 -0
  1955. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/output.rb +49 -0
  1956. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/output_safety.rb +99 -0
  1957. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/pluralization_grammar.rb +107 -0
  1958. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/presence.rb +124 -0
  1959. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/present.rb +149 -0
  1960. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/read_write_attribute.rb +74 -0
  1961. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +135 -0
  1962. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/reflection_class_name.rb +38 -0
  1963. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/refute_methods.rb +76 -0
  1964. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/relative_date_constant.rb +93 -0
  1965. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/request_referer.rb +56 -0
  1966. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/reversible_migration.rb +286 -0
  1967. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/safe_navigation.rb +91 -0
  1968. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/save_bang.rb +316 -0
  1969. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/scope_args.rb +29 -0
  1970. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/skips_model_validations.rb +88 -0
  1971. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/time_zone.rb +231 -0
  1972. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/uniq_before_pluck.rb +105 -0
  1973. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/unknown_env.rb +63 -0
  1974. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/rails/validation.rb +106 -0
  1975. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/registry.rb +190 -0
  1976. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/security/eval.rb +31 -0
  1977. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/security/json_load.rb +46 -0
  1978. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/security/marshal_load.rb +39 -0
  1979. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/security/open.rb +71 -0
  1980. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/security/yaml_load.rb +37 -0
  1981. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/severity.rb +77 -0
  1982. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/access_modifier_declarations.rb +111 -0
  1983. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/alias.rb +141 -0
  1984. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/and_or.rb +146 -0
  1985. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/array_join.rb +39 -0
  1986. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/ascii_comments.rb +61 -0
  1987. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/attr.rb +62 -0
  1988. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/auto_resource_cleanup.rb +51 -0
  1989. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/bare_percent_literals.rb +78 -0
  1990. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/begin_block.rb +22 -0
  1991. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/block_comments.rb +62 -0
  1992. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/block_delimiters.rb +315 -0
  1993. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/braces_around_hash_parameters.rb +190 -0
  1994. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/case_equality.rb +30 -0
  1995. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/character_literal.rb +53 -0
  1996. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/class_and_module_children.rb +153 -0
  1997. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/class_check.rb +59 -0
  1998. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/class_methods.rb +68 -0
  1999. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/class_vars.rb +48 -0
  2000. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/collection_methods.rb +77 -0
  2001. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/colon_method_call.rb +48 -0
  2002. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/colon_method_definition.rb +37 -0
  2003. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/command_literal.rb +187 -0
  2004. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/comment_annotation.rb +97 -0
  2005. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/commented_keyword.rb +87 -0
  2006. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/conditional_assignment.rb +698 -0
  2007. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/constant_visibility.rb +66 -0
  2008. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/copyright.rb +95 -0
  2009. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/date_time.rb +77 -0
  2010. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/def_with_parentheses.rb +57 -0
  2011. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/dir.rb +48 -0
  2012. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/documentation.rb +101 -0
  2013. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/documentation_method.rb +81 -0
  2014. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/double_negation.rb +35 -0
  2015. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/each_for_simple_loop.rb +58 -0
  2016. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/each_with_object.rb +110 -0
  2017. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_block_parameter.rb +48 -0
  2018. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_case_condition.rb +107 -0
  2019. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_else.rb +175 -0
  2020. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_lambda_parameter.rb +45 -0
  2021. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_literal.rb +123 -0
  2022. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/empty_method.rb +115 -0
  2023. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/encoding.rb +56 -0
  2024. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/end_block.rb +25 -0
  2025. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/eval_with_location.rb +148 -0
  2026. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/even_odd.rb +58 -0
  2027. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/expand_path_arguments.rb +194 -0
  2028. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/for.rb +88 -0
  2029. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/format_string.rb +123 -0
  2030. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/format_string_token.rb +170 -0
  2031. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/frozen_string_literal_comment.rb +180 -0
  2032. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/global_vars.rb +80 -0
  2033. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/guard_clause.rb +92 -0
  2034. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/hash_syntax.rb +214 -0
  2035. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/identical_conditional_branches.rb +130 -0
  2036. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/if_inside_else.rb +45 -0
  2037. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/if_unless_modifier.rb +91 -0
  2038. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +39 -0
  2039. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/if_with_semicolon.rb +30 -0
  2040. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/implicit_runtime_error.rb +32 -0
  2041. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/infinite_loop.rb +127 -0
  2042. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/inline_comment.rb +34 -0
  2043. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/inverse_methods.rb +167 -0
  2044. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/ip_addresses.rb +76 -0
  2045. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/lambda.rb +129 -0
  2046. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/lambda_call.rb +93 -0
  2047. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/line_end_concatenation.rb +121 -0
  2048. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +368 -0
  2049. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +77 -0
  2050. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/method_called_on_do_end_block.rb +46 -0
  2051. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/method_def_parentheses.rb +158 -0
  2052. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/method_missing_super.rb +34 -0
  2053. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/min_max.rb +68 -0
  2054. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/missing_else.rb +180 -0
  2055. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/missing_respond_to_missing.rb +46 -0
  2056. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/mixin_grouping.rb +150 -0
  2057. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/mixin_usage.rb +80 -0
  2058. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/module_function.rb +105 -0
  2059. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_block_chain.rb +40 -0
  2060. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_if_modifier.rb +67 -0
  2061. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_if_then.rb +50 -0
  2062. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_memoization.rb +94 -0
  2063. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_method_signature.rb +61 -0
  2064. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiline_ternary_operator.rb +38 -0
  2065. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/multiple_comparison.rb +92 -0
  2066. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/mutable_constant.rb +174 -0
  2067. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/negated_if.rb +99 -0
  2068. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/negated_while.rb +48 -0
  2069. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/nested_modifier.rb +89 -0
  2070. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/nested_parenthesized_calls.rb +67 -0
  2071. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/nested_ternary_operator.rb +32 -0
  2072. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/next.rb +244 -0
  2073. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/nil_comparison.rb +75 -0
  2074. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/non_nil_check.rb +124 -0
  2075. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/not.rb +82 -0
  2076. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/numeric_literal_prefix.rb +124 -0
  2077. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/numeric_literals.rb +110 -0
  2078. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/numeric_predicate.rb +145 -0
  2079. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/one_line_conditional.rb +99 -0
  2080. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/option_hash.rb +55 -0
  2081. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/optional_arguments.rb +61 -0
  2082. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/or_assignment.rb +90 -0
  2083. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/parallel_assignment.rb +287 -0
  2084. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/parentheses_around_condition.rb +103 -0
  2085. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/percent_literal_delimiters.rb +127 -0
  2086. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/percent_q_literals.rb +73 -0
  2087. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/perl_backrefs.rb +38 -0
  2088. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/preferred_hash_methods.rb +75 -0
  2089. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/proc.rb +34 -0
  2090. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/raise_args.rb +145 -0
  2091. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/random_with_offset.rb +161 -0
  2092. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_begin.rb +91 -0
  2093. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_conditional.rb +97 -0
  2094. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_exception.rb +60 -0
  2095. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_freeze.rb +67 -0
  2096. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_parentheses.rb +222 -0
  2097. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_return.rb +169 -0
  2098. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/redundant_self.rb +154 -0
  2099. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/regexp_literal.rb +228 -0
  2100. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/rescue_modifier.rb +49 -0
  2101. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/rescue_standard_error.rb +124 -0
  2102. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/return_nil.rb +89 -0
  2103. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/safe_navigation.rb +253 -0
  2104. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/self_assignment.rb +97 -0
  2105. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/semicolon.rb +90 -0
  2106. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/send.rb +31 -0
  2107. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/signal_exception.rb +211 -0
  2108. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/single_line_block_params.rb +95 -0
  2109. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/single_line_methods.rb +76 -0
  2110. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/special_global_vars.rb +213 -0
  2111. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +86 -0
  2112. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/stderr_puts.rb +56 -0
  2113. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/string_hash_keys.rb +49 -0
  2114. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/string_literals.rb +129 -0
  2115. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/string_literals_in_interpolation.rb +49 -0
  2116. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/string_methods.rb +46 -0
  2117. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/struct_inheritance.rb +32 -0
  2118. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/symbol_array.rb +119 -0
  2119. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/symbol_literal.rb +32 -0
  2120. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/symbol_proc.rb +130 -0
  2121. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/ternary_parentheses.rb +194 -0
  2122. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_body_on_class.rb +43 -0
  2123. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +54 -0
  2124. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_body_on_module.rb +43 -0
  2125. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +92 -0
  2126. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +58 -0
  2127. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +56 -0
  2128. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_method_end_statement.rb +93 -0
  2129. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trailing_underscore_variable.rb +161 -0
  2130. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/trivial_accessors.rb +191 -0
  2131. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unless_else.rb +56 -0
  2132. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unneeded_capital_w.rb +51 -0
  2133. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unneeded_condition.rb +112 -0
  2134. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unneeded_interpolation.rb +98 -0
  2135. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unneeded_percent_q.rb +112 -0
  2136. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/unpack_first.rb +65 -0
  2137. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/variable_interpolation.rb +58 -0
  2138. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/when_then.rb +37 -0
  2139. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/while_until_do.rb +59 -0
  2140. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/while_until_modifier.rb +61 -0
  2141. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/word_array.rb +102 -0
  2142. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/yoda_condition.rb +140 -0
  2143. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/style/zero_length_predicate.rb +117 -0
  2144. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/team.rb +190 -0
  2145. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/util.rb +129 -0
  2146. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/assignment.rb +96 -0
  2147. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/branch.rb +322 -0
  2148. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/branchable.rb +23 -0
  2149. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/reference.rb +49 -0
  2150. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/scope.rb +109 -0
  2151. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/variable.rb +104 -0
  2152. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force/variable_table.rb +129 -0
  2153. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/cop/variable_force.rb +464 -0
  2154. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/core_ext/string.rb +47 -0
  2155. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/error.rb +11 -0
  2156. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/file_finder.rb +47 -0
  2157. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/auto_gen_config_formatter.rb +16 -0
  2158. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/base_formatter.rb +123 -0
  2159. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/clang_style_formatter.rb +54 -0
  2160. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/colorizable.rb +41 -0
  2161. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/disabled_config_formatter.rb +219 -0
  2162. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/disabled_lines_formatter.rb +57 -0
  2163. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/emacs_style_formatter.rb +24 -0
  2164. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/file_list_formatter.rb +20 -0
  2165. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/formatter_set.rb +105 -0
  2166. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/fuubar_style_formatter.rb +80 -0
  2167. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/html_formatter.rb +141 -0
  2168. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/json_formatter.rb +80 -0
  2169. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/offense_count_formatter.rb +74 -0
  2170. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/progress_formatter.rb +63 -0
  2171. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/quiet_formatter.rb +13 -0
  2172. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/simple_text_formatter.rb +126 -0
  2173. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/tap_formatter.rb +71 -0
  2174. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/text_util.rb +20 -0
  2175. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/formatter/worst_offenders_formatter.rb +62 -0
  2176. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/magic_comment.rb +210 -0
  2177. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/name_similarity.rb +21 -0
  2178. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/node_pattern.rb +584 -0
  2179. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/options.rb +441 -0
  2180. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/path_util.rb +85 -0
  2181. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/platform.rb +11 -0
  2182. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/processed_source.rb +210 -0
  2183. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rake_task.rb +79 -0
  2184. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/remote_config.rb +104 -0
  2185. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/result_cache.rb +191 -0
  2186. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/cop_helper.rb +95 -0
  2187. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/expect_offense.rb +237 -0
  2188. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/host_environment_simulation_helper.rb +28 -0
  2189. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/shared_contexts.rb +96 -0
  2190. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/shared_examples.rb +59 -0
  2191. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/rspec/support.rb +14 -0
  2192. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/runner.rb +353 -0
  2193. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/string_interpreter.rb +57 -0
  2194. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/string_util.rb +14 -0
  2195. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/target_finder.rb +187 -0
  2196. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/token.rb +114 -0
  2197. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/version.rb +21 -0
  2198. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/warning.rb +11 -0
  2199. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop/yaml_duplication_checker.rb +33 -0
  2200. data/vendor/bundle/ruby/3.2.0/gems/rubocop-0.66.0/lib/rubocop.rb +654 -0
  2201. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/LICENSE.txt +19 -0
  2202. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/README.md +131 -0
  2203. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/Rakefile +2 -0
  2204. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/base.rb +234 -0
  2205. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/calculators/length.rb +98 -0
  2206. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/components/bar.rb +102 -0
  2207. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/components/percentage.rb +27 -0
  2208. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/components/rate.rb +39 -0
  2209. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/components/time.rb +101 -0
  2210. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/components/title.rb +13 -0
  2211. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  2212. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  2213. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/format/molecule.rb +61 -0
  2214. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/format/string.rb +38 -0
  2215. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/output.rb +71 -0
  2216. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  2217. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  2218. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  2219. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/progress.rb +108 -0
  2220. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/projector.rb +14 -0
  2221. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/projectors/smoothed_average.rb +71 -0
  2222. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/refinements/progress_enumerator.rb +28 -0
  2223. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/refinements.rb +1 -0
  2224. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/throttle.rb +25 -0
  2225. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/time.rb +30 -0
  2226. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/timer.rb +78 -0
  2227. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/version.rb +3 -0
  2228. data/vendor/bundle/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar.rb +12 -0
  2229. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/.document +5 -0
  2230. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/.rdoc_options +5 -0
  2231. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/COPYING +56 -0
  2232. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/LICENSE.txt +22 -0
  2233. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/NEWS.md +326 -0
  2234. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/README.md +45 -0
  2235. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/docs/io.rb +3 -0
  2236. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/ext/stringio/.document +1 -0
  2237. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/ext/stringio/Makefile +269 -0
  2238. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/ext/stringio/extconf.rb +9 -0
  2239. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/ext/stringio/stringio.c +2110 -0
  2240. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.2.0/lib/stringio.so +0 -0
  2241. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/CHANGELOG.md +121 -0
  2242. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/MIT-LICENSE.txt +22 -0
  2243. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/README.md +124 -0
  2244. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/data/display_width.marshal.gz +0 -0
  2245. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/lib/unicode/display_width/constants.rb +8 -0
  2246. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/lib/unicode/display_width/index.rb +12 -0
  2247. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/lib/unicode/display_width/no_string_ext.rb +7 -0
  2248. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/lib/unicode/display_width/string_ext.rb +17 -0
  2249. data/vendor/bundle/ruby/3.2.0/gems/unicode-display_width-1.5.0/lib/unicode/display_width.rb +51 -0
  2250. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/.document +5 -0
  2251. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/.rdoc_options +5 -0
  2252. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/BSDL +22 -0
  2253. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/COPYING +56 -0
  2254. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/README.md +55 -0
  2255. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/docs/kernel.rb +2 -0
  2256. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/common.rb +922 -0
  2257. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/file.rb +100 -0
  2258. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/ftp.rb +267 -0
  2259. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/generic.rb +1592 -0
  2260. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/http.rb +137 -0
  2261. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/https.rb +23 -0
  2262. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/ldap.rb +261 -0
  2263. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/ldaps.rb +22 -0
  2264. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/mailto.rb +293 -0
  2265. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/rfc2396_parser.rb +547 -0
  2266. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/rfc3986_parser.rb +206 -0
  2267. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/version.rb +6 -0
  2268. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/ws.rb +83 -0
  2269. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri/wss.rb +23 -0
  2270. data/vendor/bundle/ruby/3.2.0/gems/uri-1.1.1/lib/uri.rb +104 -0
  2271. data/vendor/bundle/ruby/3.2.0/specifications/ast-2.4.3.gemspec +29 -0
  2272. data/vendor/bundle/ruby/3.2.0/specifications/byebug-13.0.0.gemspec +32 -0
  2273. data/vendor/bundle/ruby/3.2.0/specifications/coderay-1.1.3.gemspec +25 -0
  2274. data/vendor/bundle/ruby/3.2.0/specifications/date-3.5.1.gemspec +25 -0
  2275. data/vendor/bundle/ruby/3.2.0/specifications/diff-lcs-1.6.2.gemspec +35 -0
  2276. data/vendor/bundle/ruby/3.2.0/specifications/faraday-2.14.3.gemspec +0 -0
  2277. data/vendor/bundle/ruby/3.2.0/specifications/faraday-multipart-1.2.0.gemspec +26 -0
  2278. data/vendor/bundle/ruby/3.2.0/specifications/faraday-net_http-3.4.4.gemspec +26 -0
  2279. data/vendor/bundle/ruby/3.2.0/specifications/io-console-0.8.2.gemspec +25 -0
  2280. data/vendor/bundle/ruby/3.2.0/specifications/jaro_winkler-1.5.6.gemspec +30 -0
  2281. data/vendor/bundle/ruby/3.2.0/specifications/json-2.20.0.gemspec +0 -0
  2282. data/vendor/bundle/ruby/3.2.0/specifications/logger-1.7.0.gemspec +22 -0
  2283. data/vendor/bundle/ruby/3.2.0/specifications/method_source-1.1.0.gemspec +21 -0
  2284. data/vendor/bundle/ruby/3.2.0/specifications/multipart-post-2.4.1.gemspec +21 -0
  2285. data/vendor/bundle/ruby/3.2.0/specifications/net-http-0.9.1.gemspec +27 -0
  2286. data/vendor/bundle/ruby/3.2.0/specifications/parallel-1.28.0.gemspec +21 -0
  2287. data/vendor/bundle/ruby/3.2.0/specifications/parser-3.3.11.1.gemspec +37 -0
  2288. data/vendor/bundle/ruby/3.2.0/specifications/pry-0.16.0.gemspec +30 -0
  2289. data/vendor/bundle/ruby/3.2.0/specifications/pry-byebug-3.12.0.gemspec +29 -0
  2290. data/vendor/bundle/ruby/3.2.0/specifications/psych-5.4.0.gemspec +32 -0
  2291. data/vendor/bundle/ruby/3.2.0/specifications/racc-1.8.1.gemspec +28 -0
  2292. data/vendor/bundle/ruby/3.2.0/specifications/rainbow-3.1.1.gemspec +25 -0
  2293. data/vendor/bundle/ruby/3.2.0/specifications/rake-13.0.6.gemspec +26 -0
  2294. data/vendor/bundle/ruby/3.2.0/specifications/reline-0.6.3.gemspec +26 -0
  2295. data/vendor/bundle/ruby/3.2.0/specifications/rspec-3.13.2.gemspec +31 -0
  2296. data/vendor/bundle/ruby/3.2.0/specifications/rspec-core-3.13.6.gemspec +31 -0
  2297. data/vendor/bundle/ruby/3.2.0/specifications/rspec-expectations-3.13.5.gemspec +29 -0
  2298. data/vendor/bundle/ruby/3.2.0/specifications/rspec-mocks-3.13.8.gemspec +29 -0
  2299. data/vendor/bundle/ruby/3.2.0/specifications/rspec-support-3.13.7.gemspec +29 -0
  2300. data/vendor/bundle/ruby/3.2.0/specifications/rubocop-0.66.0.gemspec +38 -0
  2301. data/vendor/bundle/ruby/3.2.0/specifications/ruby-progressbar-1.13.0.gemspec +29 -0
  2302. data/vendor/bundle/ruby/3.2.0/specifications/stringio-3.2.0.gemspec +26 -0
  2303. data/vendor/bundle/ruby/3.2.0/specifications/unicode-display_width-1.5.0.gemspec +29 -0
  2304. data/vendor/bundle/ruby/3.2.0/specifications/uri-1.1.1.gemspec +23 -0
  2305. metadata +2416 -27
  2306. data/lib/embed_workflow/actions.rb +0 -19
  2307. data/lib/embed_workflow/app_connections.rb +0 -75
  2308. data/lib/embed_workflow/base.rb +0 -11
  2309. data/lib/embed_workflow/catch_hook.rb +0 -24
  2310. data/lib/embed_workflow/client.rb +0 -130
  2311. data/lib/embed_workflow/errors.rb +0 -17
  2312. data/lib/embed_workflow/executions.rb +0 -28
  2313. data/lib/embed_workflow/trigger.rb +0 -31
  2314. data/lib/embed_workflow/users.rb +0 -51
  2315. data/lib/embed_workflow/workflows.rb +0 -107
@@ -0,0 +1,2827 @@
1
+ #include "../json.h"
2
+ #include "../vendor/fast_float_parser.h"
3
+ #include "../simd/simd.h"
4
+
5
+ static VALUE mJSON, eNestingError, eParserError, Encoding_UTF_8;
6
+ static VALUE CNaN, CInfinity, CMinusInfinity, JSON_empty_string;
7
+
8
+ static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
9
+
10
+ static VALUE sym_max_nesting, sym_allow_nan, sym_allow_trailing_comma, sym_allow_comments,
11
+ sym_allow_control_characters, sym_allow_invalid_escape, sym_symbolize_names,
12
+ sym_freeze, sym_decimal_class, sym_on_load, sym_allow_duplicate_key;
13
+
14
+ static int binary_encindex;
15
+ static int utf8_encindex;
16
+
17
+ #ifndef HAVE_RB_HASH_BULK_INSERT
18
+ // For TruffleRuby
19
+ static void
20
+ rb_hash_bulk_insert(long count, const VALUE *pairs, VALUE hash)
21
+ {
22
+ long index = 0;
23
+ while (index < count) {
24
+ VALUE name = pairs[index++];
25
+ VALUE value = pairs[index++];
26
+ rb_hash_aset(hash, name, value);
27
+ }
28
+ RB_GC_GUARD(hash);
29
+ }
30
+ #endif
31
+
32
+ #ifndef HAVE_RB_HASH_NEW_CAPA
33
+ #define rb_hash_new_capa(n) rb_hash_new()
34
+ #endif
35
+
36
+ #ifndef HAVE_RB_STR_TO_INTERNED_STR
37
+ static VALUE rb_str_to_interned_str(VALUE str)
38
+ {
39
+ return rb_funcall(rb_str_freeze(str), i_uminus, 0);
40
+ }
41
+ #endif
42
+
43
+ /* name cache */
44
+
45
+ #include <string.h>
46
+ #include <ctype.h>
47
+
48
+ // Object names are likely to be repeated, and are frozen.
49
+ // As such we can re-use them if we keep a cache of the ones we've seen so far,
50
+ // and save much more expensive lookups into the global fstring table.
51
+ // This cache implementation is deliberately simple, as we're optimizing for compactness,
52
+ // to be able to fit safely on the stack.
53
+ // As such, binary search into a sorted array gives a good tradeoff between compactness and
54
+ // performance.
55
+ #define JSON_RVALUE_CACHE_CAPA 63
56
+ typedef struct rvalue_cache_struct {
57
+ int length;
58
+ VALUE entries[JSON_RVALUE_CACHE_CAPA];
59
+ } rvalue_cache;
60
+
61
+ static void rvalue_cache_mark(rvalue_cache *cache)
62
+ {
63
+ for (int index = 0; index < cache->length; index++) {
64
+ rb_gc_mark_movable(cache->entries[index]);
65
+ }
66
+ }
67
+
68
+ static void rvalue_cache_compact(rvalue_cache *cache)
69
+ {
70
+ for (int index = 0; index < cache->length; index++) {
71
+ cache->entries[index] = rb_gc_location(cache->entries[index]);
72
+ }
73
+ }
74
+
75
+ static rb_encoding *enc_utf8;
76
+
77
+ #define JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH 55
78
+
79
+ static inline VALUE build_interned_string(const char *str, const long length)
80
+ {
81
+ # ifdef HAVE_RB_ENC_INTERNED_STR
82
+ return rb_enc_interned_str(str, length, enc_utf8);
83
+ # else
84
+ VALUE rstring = rb_utf8_str_new(str, length);
85
+ return rb_funcall(rb_str_freeze(rstring), i_uminus, 0);
86
+ # endif
87
+ }
88
+
89
+ static inline VALUE build_symbol(const char *str, const long length)
90
+ {
91
+ return rb_str_intern(build_interned_string(str, length));
92
+ }
93
+
94
+ static void rvalue_cache_insert_at(rvalue_cache *cache, int index, VALUE rstring)
95
+ {
96
+ MEMMOVE(&cache->entries[index + 1], &cache->entries[index], VALUE, cache->length - index);
97
+ cache->length++;
98
+ cache->entries[index] = rstring;
99
+ }
100
+
101
+ #define rstring_cache_memcmp memcmp
102
+
103
+ #if JSON_CPU_LITTLE_ENDIAN_64BITS
104
+ #if __has_builtin(__builtin_bswap64)
105
+ #undef rstring_cache_memcmp
106
+ ALWAYS_INLINE(static) int rstring_cache_memcmp(const char *str, const char *rptr, const long length)
107
+ {
108
+ // The libc memcmp has numerous complex optimizations, but in this particular case,
109
+ // we know the string is small (JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH), so being able to
110
+ // inline a simpler memcmp outperforms calling the libc version.
111
+ long i = 0;
112
+
113
+ for (; i + 8 <= length; i += 8) {
114
+ uint64_t a, b;
115
+ memcpy(&a, str + i, 8);
116
+ memcpy(&b, rptr + i, 8);
117
+ if (a != b) {
118
+ a = __builtin_bswap64(a);
119
+ b = __builtin_bswap64(b);
120
+ return (a < b) ? -1 : 1;
121
+ }
122
+ }
123
+
124
+ for (; i < length; i++) {
125
+ if (str[i] != rptr[i]) {
126
+ return (str[i] < rptr[i]) ? -1 : 1;
127
+ }
128
+ }
129
+
130
+ return 0;
131
+ }
132
+ #endif
133
+ #endif
134
+
135
+ ALWAYS_INLINE(static) int rstring_cache_cmp(const char *str, const long length, VALUE rstring)
136
+ {
137
+ const char *rstring_ptr;
138
+ long rstring_length;
139
+
140
+ RSTRING_GETMEM(rstring, rstring_ptr, rstring_length);
141
+
142
+ if (length == rstring_length) {
143
+ return rstring_cache_memcmp(str, rstring_ptr, length);
144
+ } else {
145
+ return (int)(length - rstring_length);
146
+ }
147
+ }
148
+
149
+ ALWAYS_INLINE(static) VALUE rstring_cache_fetch(rvalue_cache *cache, const char *str, const long length)
150
+ {
151
+ int low = 0;
152
+ int high = cache->length - 1;
153
+
154
+ while (low <= high) {
155
+ int mid = (high + low) >> 1;
156
+ VALUE entry = cache->entries[mid];
157
+ int cmp = rstring_cache_cmp(str, length, entry);
158
+
159
+ if (cmp == 0) {
160
+ return entry;
161
+ } else if (cmp > 0) {
162
+ low = mid + 1;
163
+ } else {
164
+ high = mid - 1;
165
+ }
166
+ }
167
+
168
+ VALUE rstring = build_interned_string(str, length);
169
+
170
+ if (cache->length < JSON_RVALUE_CACHE_CAPA) {
171
+ rvalue_cache_insert_at(cache, low, rstring);
172
+ }
173
+ return rstring;
174
+ }
175
+
176
+ static VALUE rsymbol_cache_fetch(rvalue_cache *cache, const char *str, const long length)
177
+ {
178
+ int low = 0;
179
+ int high = cache->length - 1;
180
+
181
+ while (low <= high) {
182
+ int mid = (high + low) >> 1;
183
+ VALUE entry = cache->entries[mid];
184
+ int cmp = rstring_cache_cmp(str, length, rb_sym2str(entry));
185
+
186
+ if (cmp == 0) {
187
+ return entry;
188
+ } else if (cmp > 0) {
189
+ low = mid + 1;
190
+ } else {
191
+ high = mid - 1;
192
+ }
193
+ }
194
+
195
+ VALUE rsymbol = build_symbol(str, length);
196
+
197
+ if (cache->length < JSON_RVALUE_CACHE_CAPA) {
198
+ rvalue_cache_insert_at(cache, low, rsymbol);
199
+ }
200
+ return rsymbol;
201
+ }
202
+
203
+ /* rvalue stack */
204
+
205
+ #define RVALUE_STACK_INITIAL_CAPA 128
206
+
207
+ enum rvalue_stack_type {
208
+ RVALUE_STACK_HEAP_ALLOCATED = 0,
209
+ RVALUE_STACK_STACK_ALLOCATED = 1,
210
+ };
211
+
212
+ typedef struct rvalue_stack_struct {
213
+ enum rvalue_stack_type type;
214
+ long capa;
215
+ long head;
216
+ VALUE *ptr;
217
+ } rvalue_stack;
218
+
219
+ static rvalue_stack *rvalue_stack_spill(rvalue_stack *old_stack, VALUE *handle, rvalue_stack **stack_ref);
220
+
221
+ static rvalue_stack *rvalue_stack_grow(rvalue_stack *stack, VALUE *handle, rvalue_stack **stack_ref)
222
+ {
223
+ long required = stack->capa ? stack->capa * 2 : RVALUE_STACK_INITIAL_CAPA;
224
+
225
+ if (stack->type == RVALUE_STACK_STACK_ALLOCATED) {
226
+ stack = rvalue_stack_spill(stack, handle, stack_ref);
227
+ } else {
228
+ JSON_SIZED_REALLOC_N(stack->ptr, VALUE, required, stack->capa);
229
+ stack->capa = required;
230
+ }
231
+ return stack;
232
+ }
233
+
234
+ static VALUE rvalue_stack_push(rvalue_stack *stack, VALUE value, VALUE *handle, rvalue_stack **stack_ref)
235
+ {
236
+ JSON_ASSERT(stack->type != RVALUE_STACK_STACK_ALLOCATED || handle);
237
+
238
+ if (RB_UNLIKELY(stack->head >= stack->capa)) {
239
+ stack = rvalue_stack_grow(stack, handle, stack_ref);
240
+ }
241
+
242
+ stack->ptr[stack->head] = value;
243
+ stack->head++;
244
+
245
+ return value;
246
+ }
247
+
248
+ static inline VALUE *rvalue_stack_peek(rvalue_stack *stack, long count)
249
+ {
250
+ return stack->ptr + (stack->head - count);
251
+ }
252
+
253
+ static inline void rvalue_stack_pop(rvalue_stack *stack, long count)
254
+ {
255
+ stack->head -= count;
256
+ }
257
+
258
+ static void rvalue_stack_mark(void *ptr)
259
+ {
260
+ rvalue_stack *stack = (rvalue_stack *)ptr;
261
+ long index;
262
+ if (stack && stack->ptr) {
263
+ for (index = 0; index < stack->head; index++) {
264
+ rb_gc_mark_movable(stack->ptr[index]);
265
+ }
266
+ }
267
+ }
268
+
269
+ static void rvalue_stack_free_buffer(rvalue_stack *stack)
270
+ {
271
+ JSON_SIZED_FREE_N(stack->ptr, stack->capa);
272
+ stack->ptr = NULL;
273
+ }
274
+
275
+ static void rvalue_stack_free(void *ptr)
276
+ {
277
+ rvalue_stack *stack = (rvalue_stack *)ptr;
278
+ if (stack) {
279
+ rvalue_stack_free_buffer(stack);
280
+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
281
+ JSON_SIZED_FREE(stack);
282
+ #endif
283
+ }
284
+ }
285
+
286
+ static size_t rvalue_stack_memsize(const void *ptr)
287
+ {
288
+ const rvalue_stack *stack = (const rvalue_stack *)ptr;
289
+ size_t memsize = sizeof(VALUE) * stack->capa;
290
+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
291
+ memsize += sizeof(rvalue_stack);
292
+ #endif
293
+ return memsize;
294
+ }
295
+
296
+ static void rvalue_stack_compact(void *ptr)
297
+ {
298
+ rvalue_stack *stack = (rvalue_stack *)ptr;
299
+ long index;
300
+ if (stack && stack->ptr) {
301
+ for (index = 0; index < stack->head; index++) {
302
+ stack->ptr[index] = rb_gc_location(stack->ptr[index]);
303
+ }
304
+ }
305
+ }
306
+
307
+ static const rb_data_type_t JSON_Parser_rvalue_stack_type = {
308
+ .wrap_struct_name = "JSON::Ext::Parser/rvalue_stack",
309
+ .function = {
310
+ .dmark = rvalue_stack_mark,
311
+ .dfree = rvalue_stack_free,
312
+ .dsize = rvalue_stack_memsize,
313
+ .dcompact = rvalue_stack_compact,
314
+ },
315
+ // We deliberately don't declare rvalue_stack as RUBY_TYPED_WB_PROTECTED
316
+ // because it churns a lot of values so trigering write barriers every time is very costly.
317
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
318
+ };
319
+
320
+ static rvalue_stack *rvalue_stack_spill(rvalue_stack *old_stack, VALUE *handle, rvalue_stack **stack_ref)
321
+ {
322
+ rvalue_stack *stack;
323
+ *handle = TypedData_Make_Struct(0, rvalue_stack, &JSON_Parser_rvalue_stack_type, stack);
324
+ *stack_ref = stack;
325
+ MEMCPY(stack, old_stack, rvalue_stack, 1);
326
+
327
+ stack->capa = old_stack->capa << 1;
328
+ stack->ptr = ALLOC_N(VALUE, stack->capa);
329
+ stack->type = RVALUE_STACK_HEAP_ALLOCATED;
330
+ MEMCPY(stack->ptr, old_stack->ptr, VALUE, old_stack->head);
331
+ return stack;
332
+ }
333
+
334
+ static void rvalue_stack_eagerly_release(VALUE handle)
335
+ {
336
+ if (handle) {
337
+ rvalue_stack *stack;
338
+ TypedData_Get_Struct(handle, rvalue_stack, &JSON_Parser_rvalue_stack_type, stack);
339
+ #ifdef HAVE_RUBY_TYPED_EMBEDDABLE
340
+ rvalue_stack_free_buffer(stack);
341
+ #else
342
+ rvalue_stack_free(stack);
343
+ RTYPEDDATA_DATA(handle) = NULL;
344
+ #endif
345
+ }
346
+ }
347
+
348
+ /* frame stack */
349
+
350
+ // Iterative (non-recursive) parsing keeps an explicit stack of the containers
351
+ // currently being built, instead of relying on the C call stack. Each frame
352
+ // only needs enough bookkeeping to close its container: which kind it is, the
353
+ // rvalue_stack position where its children start (so we know how many to pop),
354
+ // and the cursor at its opening brace (used to rewind for duplicate key
355
+ // errors). Frames hold no VALUEs, so this stack needs no GC marking; it reuses
356
+ // the same stack-allocated-with-heap-spill strategy as the rvalue_stack so that
357
+ // it's freed even if parsing raises.
358
+ //
359
+ // The lifecycle helpers below (grow/push/peek/pop/spill/free/eagerly_release
360
+ // and the rb_data_type_t) deliberately mirror their rvalue_stack counterparts
361
+ // -- the element type and the absence of a mark function are the only real
362
+ // differences. Keep the two in sync: a fix to the spill/release or
363
+ // HAVE_RUBY_TYPED_EMBEDDABLE handling in one almost certainly belongs in the
364
+ // other.
365
+ #define JSON_FRAME_STACK_INITIAL_CAPA 32
366
+
367
+ enum json_frame_type {
368
+ JSON_FRAME_ROOT, // == JSON_PHASE_DONE
369
+ JSON_FRAME_ARRAY, // == JSON_PHASE_ARRAY_COMMA
370
+ JSON_FRAME_OBJECT, // = JSON_PHASE_OBJECT_COMMA
371
+ };
372
+
373
+ // Where a frame is within its container's grammar. This is the entirety of the
374
+ // parser's "what to do next" state: json_parse_any dispatches on the top
375
+ // frame's phase and holds no resume state in C locals, so a parse can stop at
376
+ // any value boundary and be resumed purely from the (persistable) frame stack.
377
+ //
378
+ // The first three phases are deliberately equal to the corresponding json_frame_type
379
+ // to simplify the transition of phase in json_value_completed.
380
+ enum json_frame_phase {
381
+ JSON_PHASE_DONE = JSON_FRAME_ROOT, // root only: the document value has been parsed
382
+ JSON_PHASE_ARRAY_COMMA = JSON_FRAME_ARRAY, // after a value: expecting ',' or the closing ']'
383
+ JSON_PHASE_OBJECT_COMMA = JSON_FRAME_OBJECT, // after a value: expecting ',' or the closing '}'
384
+ JSON_PHASE_VALUE, // expecting a value (document root, array element, or object value after ':')
385
+ JSON_PHASE_OBJECT_KEY, // expecting a '"' key (after '{' or ',')
386
+ JSON_PHASE_OBJECT_COLON, // object only: after a key, expecting ':'
387
+ };
388
+
389
+ typedef struct json_frame_struct {
390
+ enum json_frame_type type;
391
+ enum json_frame_phase phase;
392
+ long value_stack_head; // rvalue_stack->head when this container opened
393
+ size_t start_offset; // object frames only (the '{'); NULL otherwise
394
+ } json_frame;
395
+
396
+ typedef struct json_frame_stack_struct {
397
+ enum rvalue_stack_type type; // shared with rvalue_stack: is ptr stack- or heap-allocated
398
+ long capa;
399
+ long head;
400
+ json_frame *ptr;
401
+ } json_frame_stack;
402
+
403
+ enum deprecatable_action {
404
+ JSON_DEPRECATED = 0,
405
+ JSON_IGNORE,
406
+ JSON_RAISE,
407
+ };
408
+
409
+ typedef struct JSON_ParserStruct {
410
+ VALUE on_load_proc;
411
+ VALUE decimal_class;
412
+ ID decimal_method_id;
413
+ enum deprecatable_action on_duplicate_key;
414
+ enum deprecatable_action on_comment;
415
+ int max_nesting;
416
+ bool allow_nan;
417
+ bool allow_trailing_comma;
418
+ bool allow_control_characters;
419
+ bool allow_invalid_escape;
420
+ bool symbolize_names;
421
+ bool freeze;
422
+ } JSON_ParserConfig;
423
+
424
+ typedef struct JSON_ParserStateStruct {
425
+ VALUE *value_stack_handle;
426
+ VALUE *frame_stack_handle;
427
+ const char *start;
428
+ const char *cursor;
429
+ const char *end;
430
+ rvalue_stack *value_stack;
431
+ json_frame_stack *frames;
432
+ rvalue_cache name_cache;
433
+ int in_array;
434
+ int current_nesting;
435
+ unsigned int emitted_deprecations;
436
+ VALUE parser;
437
+ } JSON_ParserState;
438
+
439
+ static json_frame_stack *json_frame_stack_spill(json_frame_stack *old_stack, VALUE *handle, json_frame_stack **stack_ref);
440
+
441
+ static json_frame_stack *json_frame_stack_grow(json_frame_stack *stack, VALUE *handle, json_frame_stack **stack_ref)
442
+ {
443
+ long required = stack->capa ? stack->capa * 2 : JSON_FRAME_STACK_INITIAL_CAPA;
444
+
445
+ if (stack->type == RVALUE_STACK_STACK_ALLOCATED) {
446
+ stack = json_frame_stack_spill(stack, handle, stack_ref);
447
+ } else {
448
+ JSON_SIZED_REALLOC_N(stack->ptr, json_frame, required, stack->capa);
449
+ stack->capa = required;
450
+ }
451
+ return stack;
452
+ }
453
+
454
+ static json_frame *json_frame_stack_push(JSON_ParserState *state, json_frame frame)
455
+ {
456
+ json_frame_stack *stack = state->frames;
457
+
458
+ JSON_ASSERT(stack->type != RVALUE_STACK_STACK_ALLOCATED || state->frame_stack_handle);
459
+
460
+ if (RB_UNLIKELY(stack->head >= stack->capa)) {
461
+ stack = json_frame_stack_grow(stack, state->frame_stack_handle, &state->frames);
462
+ }
463
+
464
+ json_frame *frame_ptr = &stack->ptr[stack->head++];
465
+ *frame_ptr = frame;
466
+ return frame_ptr;
467
+ }
468
+
469
+ static inline json_frame *json_frame_stack_peek(json_frame_stack *stack)
470
+ {
471
+ return &stack->ptr[stack->head - 1];
472
+ }
473
+
474
+ static inline void json_frame_stack_pop(json_frame_stack *stack)
475
+ {
476
+ stack->head--;
477
+ }
478
+
479
+ static void json_frame_stack_free_buffer(json_frame_stack *stack)
480
+ {
481
+ JSON_SIZED_FREE_N(stack->ptr, stack->capa);
482
+ stack->ptr = NULL;
483
+ }
484
+
485
+ static void json_frame_stack_free(void *ptr)
486
+ {
487
+ json_frame_stack *stack = (json_frame_stack *)ptr;
488
+ if (stack) {
489
+ json_frame_stack_free_buffer(stack);
490
+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
491
+ JSON_SIZED_FREE(stack);
492
+ #endif
493
+ }
494
+ }
495
+
496
+ static size_t json_frame_stack_memsize(const void *ptr)
497
+ {
498
+ const json_frame_stack *stack = (const json_frame_stack *)ptr;
499
+
500
+ size_t memsize = sizeof(json_frame) * stack->capa;
501
+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
502
+ memsize += sizeof(json_frame_stack);
503
+ #endif
504
+ return memsize;
505
+ }
506
+
507
+ static const rb_data_type_t JSON_Parser_frame_stack_type = {
508
+ .wrap_struct_name = "JSON::Ext::Parser/frame_stack",
509
+ .function = {
510
+ .dmark = NULL,
511
+ .dfree = json_frame_stack_free,
512
+ .dsize = json_frame_stack_memsize,
513
+ },
514
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
515
+ };
516
+
517
+ static json_frame_stack *json_frame_stack_spill(json_frame_stack *old_stack, VALUE *handle, json_frame_stack **stack_ref)
518
+ {
519
+ json_frame_stack *stack;
520
+ *handle = TypedData_Make_Struct(0, json_frame_stack, &JSON_Parser_frame_stack_type, stack);
521
+ *stack_ref = stack;
522
+ MEMCPY(stack, old_stack, json_frame_stack, 1);
523
+
524
+ stack->capa = old_stack->capa << 1;
525
+ stack->ptr = ALLOC_N(json_frame, stack->capa);
526
+ stack->type = RVALUE_STACK_HEAP_ALLOCATED;
527
+ MEMCPY(stack->ptr, old_stack->ptr, json_frame, old_stack->head);
528
+ return stack;
529
+ }
530
+
531
+ static void json_frame_stack_eagerly_release(VALUE handle)
532
+ {
533
+ if (handle) {
534
+ json_frame_stack *stack;
535
+ TypedData_Get_Struct(handle, json_frame_stack, &JSON_Parser_frame_stack_type, stack);
536
+ #ifdef HAVE_RUBY_TYPED_EMBEDDABLE
537
+ json_frame_stack_free_buffer(stack);
538
+ #else
539
+ json_frame_stack_free(stack);
540
+ RTYPEDDATA_DATA(handle) = NULL;
541
+ #endif
542
+ }
543
+ }
544
+
545
+ static int convert_UTF32_to_UTF8(char *buf, uint32_t ch)
546
+ {
547
+ int len = 1;
548
+ if (ch <= 0x7F) {
549
+ buf[0] = (char) ch;
550
+ } else if (ch <= 0x07FF) {
551
+ buf[0] = (char) ((ch >> 6) | 0xC0);
552
+ buf[1] = (char) ((ch & 0x3F) | 0x80);
553
+ len++;
554
+ } else if (ch <= 0xFFFF) {
555
+ buf[0] = (char) ((ch >> 12) | 0xE0);
556
+ buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80);
557
+ buf[2] = (char) ((ch & 0x3F) | 0x80);
558
+ len += 2;
559
+ } else if (ch <= 0x1fffff) {
560
+ buf[0] =(char) ((ch >> 18) | 0xF0);
561
+ buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80);
562
+ buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80);
563
+ buf[3] =(char) ((ch & 0x3F) | 0x80);
564
+ len += 3;
565
+ } else {
566
+ buf[0] = '?';
567
+ }
568
+ return len;
569
+ }
570
+
571
+ static inline size_t rest(JSON_ParserState *state) {
572
+ return state->end - state->cursor;
573
+ }
574
+
575
+ static inline bool eos(JSON_ParserState *state) {
576
+ return state->cursor >= state->end;
577
+ }
578
+
579
+ static inline char peek(JSON_ParserState *state)
580
+ {
581
+ if (RB_UNLIKELY(eos(state))) {
582
+ return 0;
583
+ }
584
+ return *state->cursor;
585
+ }
586
+
587
+ static void cursor_position(JSON_ParserState *state, long *line_out, long *column_out)
588
+ {
589
+ JSON_ASSERT(state->cursor <= state->end);
590
+
591
+ // Redundant but helpful for hardening
592
+ if (RB_UNLIKELY(state->cursor > state->end)) {
593
+ state->cursor = state->end;
594
+ }
595
+
596
+ const char *cursor = state->cursor;
597
+ long column = 0;
598
+ long line = 1;
599
+
600
+ while (cursor >= state->start) {
601
+ if (*cursor-- == '\n') {
602
+ line++;
603
+ break;
604
+ }
605
+ column++;
606
+ }
607
+
608
+ while (cursor >= state->start) {
609
+ if (*cursor-- == '\n') {
610
+ line++;
611
+ }
612
+ }
613
+ *line_out = line;
614
+ *column_out = column;
615
+ }
616
+
617
+ static const unsigned int MAX_DEPRECATIONS = 5;
618
+
619
+ static void emit_parse_warning(const char *message, JSON_ParserState *state)
620
+ {
621
+ long line, column;
622
+ cursor_position(state, &line, &column);
623
+
624
+ VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
625
+ rb_funcall(mJSON, rb_intern("deprecation_warning"), 1, warning);
626
+ }
627
+
628
+ #define PARSE_ERROR_FRAGMENT_LEN 32
629
+
630
+ static VALUE build_parse_error_message(const char *format, JSON_ParserState *state)
631
+ {
632
+ unsigned char buffer[PARSE_ERROR_FRAGMENT_LEN + 3];
633
+
634
+ const char *ptr = "EOF";
635
+ if (state->cursor && state->cursor < state->end) {
636
+ ptr = state->cursor;
637
+ size_t len = 0;
638
+ while (len < PARSE_ERROR_FRAGMENT_LEN) {
639
+ char ch = ptr[len];
640
+ if (!ch || ch == '\n' || ch == ' ' || ch == '\t' || ch == '\r') {
641
+ break;
642
+ }
643
+ len++;
644
+ }
645
+
646
+ if (len) {
647
+ buffer[0] = '\'';
648
+ MEMCPY(buffer + 1, ptr, char, len);
649
+
650
+ while (buffer[len] >= 0x80 && buffer[len] < 0xC0) { // Is continuation byte
651
+ len--;
652
+ }
653
+
654
+ if (buffer[len] >= 0xC0) { // multibyte character start
655
+ len--;
656
+ }
657
+
658
+ buffer[len + 1] = '\'';
659
+ buffer[len + 2] = '\0';
660
+ ptr = (const char *)buffer;
661
+ }
662
+ }
663
+
664
+ return rb_enc_sprintf(enc_utf8, format, ptr);
665
+ }
666
+
667
+ static VALUE parse_error_new(JSON_ParserState *state, VALUE message, long line, long column, bool eos)
668
+ {
669
+ VALUE exc = rb_exc_new_str(eParserError, message);
670
+ rb_ivar_set(exc, i_at_line, LONG2NUM(line));
671
+ rb_ivar_set(exc, i_at_column, LONG2NUM(column));
672
+ return exc;
673
+ }
674
+
675
+ NORETURN(static) void raise_parse_error(const char *format, JSON_ParserState *state, bool eos)
676
+ {
677
+ if (state->parser) {
678
+ if (eos) {
679
+ // the error will be swallowed by ResumableParser#parse, so no
680
+ // point building a message or backtrace.
681
+ rb_throw_obj(state->parser, state->parser);
682
+ } else {
683
+ // line and columns can't be accurate in resumable
684
+ rb_exc_raise(parse_error_new(state, build_parse_error_message(format, state), 0, 0, eos));
685
+ }
686
+ } else {
687
+ VALUE message = build_parse_error_message(format, state);
688
+ long line, column;
689
+ cursor_position(state, &line, &column);
690
+ rb_str_catf(message, " at line %ld column %ld", line, column);
691
+ rb_exc_raise(parse_error_new(state, message, line, column, eos));
692
+ }
693
+ }
694
+
695
+ NORETURN(static) void raise_eos_error(const char *format, JSON_ParserState *state)
696
+ {
697
+ raise_parse_error(format, state, true);
698
+ }
699
+
700
+ NORETURN(static) void raise_syntax_error(const char *format, JSON_ParserState *state)
701
+ {
702
+ raise_parse_error(format, state, false);
703
+ }
704
+
705
+ NORETURN(static) void raise_parse_error_at(const char *format, JSON_ParserState *state, const char *at, bool eos)
706
+ {
707
+ state->cursor = at;
708
+ raise_parse_error(format, state, eos);
709
+ }
710
+
711
+ NORETURN(static) void raise_eos_error_at(const char *format, JSON_ParserState *state, const char *at)
712
+ {
713
+ raise_parse_error_at(format, state, at, true);
714
+ }
715
+
716
+ NORETURN(static) void raise_syntax_error_at(const char *format, JSON_ParserState *state, const char *at)
717
+ {
718
+ raise_parse_error_at(format, state, at, false);
719
+ }
720
+
721
+ /* unicode */
722
+
723
+ static const signed char digit_values[256] = {
724
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
725
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
726
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1,
727
+ -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
728
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
729
+ 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
730
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
731
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
732
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
733
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
734
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
735
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
736
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
737
+ -1, -1, -1, -1, -1, -1, -1
738
+ };
739
+
740
+ static uint32_t unescape_unicode(JSON_ParserState *state, const char *sp, const char *spe)
741
+ {
742
+ if (RB_UNLIKELY(sp > spe - 4)) {
743
+ raise_eos_error_at("incomplete unicode character escape sequence at %s", state, sp - 2);
744
+ }
745
+
746
+ const unsigned char *p = (const unsigned char *)sp;
747
+
748
+ const signed char b0 = digit_values[p[0]];
749
+ const signed char b1 = digit_values[p[1]];
750
+ const signed char b2 = digit_values[p[2]];
751
+ const signed char b3 = digit_values[p[3]];
752
+
753
+ if (RB_UNLIKELY((signed char)(b0 | b1 | b2 | b3) < 0)) {
754
+ raise_syntax_error_at("incomplete unicode character escape sequence at %s", state, sp - 2);
755
+ }
756
+
757
+ return ((uint32_t)b0 << 12) | ((uint32_t)b1 << 8) | ((uint32_t)b2 << 4) | (uint32_t)b3;
758
+ }
759
+
760
+ #define GET_PARSER_CONFIG \
761
+ JSON_ParserConfig *config; \
762
+ TypedData_Get_Struct(self, JSON_ParserConfig, &JSON_ParserConfig_type, config)
763
+
764
+ static const rb_data_type_t JSON_ParserConfig_type;
765
+
766
+ const char *COMMENT_DEPRECATION_MESSAGE = "Encountered comment in JSON. This will raise an error in json 3.0 unless enabled via `allow_comments: true`";
767
+ NOINLINE(static) void
768
+ json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
769
+ {
770
+ if (config->on_comment == JSON_RAISE) {
771
+ raise_syntax_error("unexpected token %s", state);
772
+ }
773
+
774
+ const char *start = state->cursor;
775
+ state->cursor++;
776
+
777
+ switch (peek(state)) {
778
+ case '/': {
779
+ state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
780
+ if (!state->cursor) {
781
+ state->cursor = state->end;
782
+ } else {
783
+ state->cursor++;
784
+ }
785
+ break;
786
+ }
787
+ case '*': {
788
+ state->cursor++;
789
+
790
+ while (true) {
791
+ const char *next_match = memchr(state->cursor, '*', state->end - state->cursor);
792
+ if (!next_match) {
793
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
794
+ }
795
+
796
+ state->cursor = next_match + 1;
797
+ if (peek(state) == '/') {
798
+ state->cursor++;
799
+ break;
800
+ }
801
+ }
802
+ break;
803
+ }
804
+ default:
805
+ raise_parse_error_at("unexpected token %s", state, start, eos(state));
806
+ break;
807
+ }
808
+
809
+ if (config->on_comment == JSON_DEPRECATED && state->emitted_deprecations < MAX_DEPRECATIONS) {
810
+ state->emitted_deprecations++;
811
+ emit_parse_warning(COMMENT_DEPRECATION_MESSAGE, state);
812
+ }
813
+ }
814
+
815
+ ALWAYS_INLINE(static) void
816
+ json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
817
+ {
818
+ while (true) {
819
+ switch (peek(state)) {
820
+ case ' ':
821
+ state->cursor++;
822
+ break;
823
+ case '\n':
824
+ state->cursor++;
825
+
826
+ // Heuristic: if we see a newline, there is likely consecutive spaces after it.
827
+ #if JSON_CPU_LITTLE_ENDIAN_64BITS
828
+ while (rest(state) > 8) {
829
+ uint64_t chunk;
830
+ memcpy(&chunk, state->cursor, sizeof(uint64_t));
831
+ if (chunk == 0x2020202020202020) {
832
+ state->cursor += 8;
833
+ continue;
834
+ }
835
+
836
+ uint32_t consecutive_spaces = trailing_zeros64(chunk ^ 0x2020202020202020) / CHAR_BIT;
837
+ state->cursor += consecutive_spaces;
838
+ break;
839
+ }
840
+ #endif
841
+ break;
842
+ case '\t':
843
+ case '\r':
844
+ state->cursor++;
845
+ break;
846
+ case '/':
847
+ if (!include_comments) {
848
+ return;
849
+ }
850
+
851
+ json_eat_comments(state, config);
852
+ break;
853
+
854
+ default:
855
+ return;
856
+ }
857
+ }
858
+ }
859
+
860
+ static inline VALUE build_string(const char *start, const char *end, bool intern, bool symbolize)
861
+ {
862
+ if (symbolize) {
863
+ intern = true;
864
+ }
865
+ VALUE result;
866
+ # ifdef HAVE_RB_ENC_INTERNED_STR
867
+ if (intern) {
868
+ result = rb_enc_interned_str(start, (long)(end - start), enc_utf8);
869
+ } else {
870
+ result = rb_utf8_str_new(start, (long)(end - start));
871
+ }
872
+ # else
873
+ result = rb_utf8_str_new(start, (long)(end - start));
874
+ if (intern) {
875
+ result = rb_funcall(rb_str_freeze(result), i_uminus, 0);
876
+ }
877
+ # endif
878
+
879
+ if (symbolize) {
880
+ result = rb_str_intern(result);
881
+ }
882
+
883
+ return result;
884
+ }
885
+
886
+ static inline bool json_string_cacheable_p(const char *string, size_t length)
887
+ {
888
+ // We mostly want to cache strings that are likely to be repeated.
889
+ // Simple heuristics:
890
+ // - Common names aren't likely to be very long. So we just don't cache names above an arbitrary threshold.
891
+ // - If the first character isn't a letter, we're much less likely to see this string again.
892
+ return length <= JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH && rb_isalpha(string[0]);
893
+ }
894
+
895
+ static inline VALUE json_string_fastpath(JSON_ParserState *state, JSON_ParserConfig *config, const char *string, const char *stringEnd, bool is_name)
896
+ {
897
+ bool intern = is_name || config->freeze;
898
+ bool symbolize = is_name && config->symbolize_names;
899
+ size_t bufferSize = stringEnd - string;
900
+
901
+ if (is_name && state->in_array && RB_LIKELY(json_string_cacheable_p(string, bufferSize))) {
902
+ VALUE cached_key;
903
+ if (RB_UNLIKELY(symbolize)) {
904
+ cached_key = rsymbol_cache_fetch(&state->name_cache, string, bufferSize);
905
+ } else {
906
+ cached_key = rstring_cache_fetch(&state->name_cache, string, bufferSize);
907
+ }
908
+
909
+ if (RB_LIKELY(cached_key)) {
910
+ return cached_key;
911
+ }
912
+ }
913
+
914
+ return build_string(string, stringEnd, intern, symbolize);
915
+ }
916
+
917
+ #define JSON_MAX_UNESCAPE_POSITIONS 16
918
+ typedef struct _json_unescape_positions {
919
+ long size;
920
+ const char **positions;
921
+ unsigned long additional_backslashes;
922
+ } JSON_UnescapePositions;
923
+
924
+ static inline const char *json_next_backslash(const char *pe, const char *stringEnd, JSON_UnescapePositions *positions)
925
+ {
926
+ while (positions->size) {
927
+ positions->size--;
928
+ const char *next_position = positions->positions[0];
929
+ positions->positions++;
930
+ if (next_position >= pe) {
931
+ return next_position;
932
+ }
933
+ }
934
+
935
+ if (positions->additional_backslashes) {
936
+ positions->additional_backslashes--;
937
+ return memchr(pe, '\\', stringEnd - pe);
938
+ }
939
+
940
+ return NULL;
941
+ }
942
+
943
+ NOINLINE(static) VALUE json_string_unescape(JSON_ParserState *state, JSON_ParserConfig *config, const char *string, const char *stringEnd, bool is_name, JSON_UnescapePositions *positions)
944
+ {
945
+ bool intern = is_name || config->freeze;
946
+ bool symbolize = is_name && config->symbolize_names;
947
+ size_t bufferSize = stringEnd - string;
948
+ const char *p = string, *pe = string, *bufferStart;
949
+ char *buffer;
950
+
951
+ VALUE result = rb_str_buf_new(bufferSize);
952
+ rb_enc_associate_index(result, utf8_encindex);
953
+ buffer = RSTRING_PTR(result);
954
+ bufferStart = buffer;
955
+
956
+ #define APPEND_CHAR(chr) *buffer++ = chr; p = ++pe;
957
+
958
+ while (pe < stringEnd && (pe = json_next_backslash(pe, stringEnd, positions))) {
959
+ if (pe > p) {
960
+ MEMCPY(buffer, p, char, pe - p);
961
+ buffer += pe - p;
962
+ }
963
+ switch (*++pe) {
964
+ case '"':
965
+ case '/':
966
+ p = pe; // nothing to unescape just need to skip the backslash
967
+ break;
968
+ case '\\':
969
+ APPEND_CHAR('\\');
970
+ break;
971
+ case 'n':
972
+ APPEND_CHAR('\n');
973
+ break;
974
+ case 'r':
975
+ APPEND_CHAR('\r');
976
+ break;
977
+ case 't':
978
+ APPEND_CHAR('\t');
979
+ break;
980
+ case 'b':
981
+ APPEND_CHAR('\b');
982
+ break;
983
+ case 'f':
984
+ APPEND_CHAR('\f');
985
+ break;
986
+ case 'u': {
987
+ uint32_t ch = unescape_unicode(state, ++pe, stringEnd);
988
+ pe += 3;
989
+ /* To handle values above U+FFFF, we take a sequence of
990
+ * \uXXXX escapes in the U+D800..U+DBFF then
991
+ * U+DC00..U+DFFF ranges, take the low 10 bits from each
992
+ * to make a 20-bit number, then add 0x10000 to get the
993
+ * final codepoint.
994
+ *
995
+ * See Unicode 15: 3.8 "Surrogates", 5.3 "Handling
996
+ * Surrogate Pairs in UTF-16", and 23.6 "Surrogates
997
+ * Area".
998
+ */
999
+ if ((ch & 0xFC00) == 0xD800) {
1000
+ pe++;
1001
+ if (RB_LIKELY((pe <= stringEnd - 6) && memcmp(pe, "\\u", 2) == 0)) {
1002
+ uint32_t sur = unescape_unicode(state, pe + 2, stringEnd);
1003
+
1004
+ if (RB_UNLIKELY((sur & 0xFC00) != 0xDC00)) {
1005
+ raise_syntax_error_at("invalid surrogate pair at %s", state, p);
1006
+ }
1007
+
1008
+ ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16) | (sur & 0x3FF));
1009
+ pe += 5;
1010
+ } else {
1011
+ raise_syntax_error_at("incomplete surrogate pair at %s", state, p);
1012
+ break;
1013
+ }
1014
+ }
1015
+
1016
+ int unescape_len = convert_UTF32_to_UTF8(buffer, ch);
1017
+ buffer += unescape_len;
1018
+ p = ++pe;
1019
+ break;
1020
+ }
1021
+ case 0:
1022
+ return Qundef;
1023
+ default:
1024
+ if ((unsigned char)*pe < 0x20) {
1025
+ if (!config->allow_control_characters) {
1026
+ if (*pe == '\n') {
1027
+ raise_syntax_error_at("Invalid unescaped newline character (\\n) in string: %s", state, pe - 1);
1028
+ }
1029
+ raise_syntax_error_at("invalid ASCII control character in string: %s", state, pe - 1);
1030
+ }
1031
+ }
1032
+
1033
+ if (config->allow_invalid_escape) {
1034
+ APPEND_CHAR(*pe);
1035
+ } else {
1036
+ raise_syntax_error_at("invalid escape character in string: %s", state, pe - 1);
1037
+ }
1038
+ break;
1039
+ }
1040
+ }
1041
+ #undef APPEND_CHAR
1042
+
1043
+ if (stringEnd > p) {
1044
+ MEMCPY(buffer, p, char, stringEnd - p);
1045
+ buffer += stringEnd - p;
1046
+ }
1047
+ rb_str_set_len(result, buffer - bufferStart);
1048
+
1049
+ if (symbolize) {
1050
+ result = rb_str_intern(result);
1051
+ } else if (intern) {
1052
+ result = rb_str_to_interned_str(result);
1053
+ }
1054
+
1055
+ return result;
1056
+ }
1057
+
1058
+ #define MAX_FAST_INTEGER_SIZE 18
1059
+ #define MAX_NUMBER_STACK_BUFFER 128
1060
+
1061
+ typedef VALUE (*json_number_decode_func_t)(const char *ptr);
1062
+
1063
+ static inline VALUE json_decode_large_number(const char *start, long len, json_number_decode_func_t func)
1064
+ {
1065
+ if (RB_LIKELY(len < MAX_NUMBER_STACK_BUFFER)) {
1066
+ char buffer[MAX_NUMBER_STACK_BUFFER];
1067
+ MEMCPY(buffer, start, char, len);
1068
+ buffer[len] = '\0';
1069
+ return func(buffer);
1070
+ } else {
1071
+ VALUE buffer_v = rb_str_tmp_new(len);
1072
+ char *buffer = RSTRING_PTR(buffer_v);
1073
+ MEMCPY(buffer, start, char, len);
1074
+ buffer[len] = '\0';
1075
+ VALUE number = func(buffer);
1076
+ RB_GC_GUARD(buffer_v);
1077
+ return number;
1078
+ }
1079
+ }
1080
+
1081
+ static VALUE json_decode_inum(const char *buffer)
1082
+ {
1083
+ return rb_cstr2inum(buffer, 10);
1084
+ }
1085
+
1086
+ NOINLINE(static) VALUE json_decode_large_integer(const char *start, long len)
1087
+ {
1088
+ return json_decode_large_number(start, len, json_decode_inum);
1089
+ }
1090
+
1091
+ static inline VALUE json_decode_integer(uint64_t mantissa, int mantissa_digits, bool negative, const char *start, const char *end)
1092
+ {
1093
+ if (RB_LIKELY(mantissa_digits < MAX_FAST_INTEGER_SIZE)) {
1094
+ if (negative) {
1095
+ return INT64T2NUM(-((int64_t)mantissa));
1096
+ }
1097
+ return UINT64T2NUM(mantissa);
1098
+ }
1099
+
1100
+ return json_decode_large_integer(start, end - start);
1101
+ }
1102
+
1103
+ static VALUE json_decode_dnum(const char *buffer)
1104
+ {
1105
+ return DBL2NUM(rb_cstr_to_dbl(buffer, 1));
1106
+ }
1107
+
1108
+ NOINLINE(static) VALUE json_decode_large_float(const char *start, long len)
1109
+ {
1110
+ return json_decode_large_number(start, len, json_decode_dnum);
1111
+ }
1112
+
1113
+ /* Ruby JSON optimized float decoder using vendored Ryu algorithm
1114
+ * Accepts pre-extracted mantissa and exponent from first-pass validation
1115
+ */
1116
+ static inline VALUE json_decode_float(JSON_ParserConfig *config, uint64_t mantissa, int mantissa_digits, int64_t exponent, bool negative,
1117
+ const char *start, const char *end)
1118
+ {
1119
+ if (RB_UNLIKELY(config->decimal_class)) {
1120
+ VALUE text = rb_str_new(start, end - start);
1121
+ return rb_funcallv(config->decimal_class, config->decimal_method_id, 1, &text);
1122
+ }
1123
+
1124
+ if (RB_UNLIKELY(exponent > INT32_MAX)) {
1125
+ return negative ? CMinusInfinity : CInfinity;
1126
+ }
1127
+
1128
+ if (RB_UNLIKELY(exponent < INT32_MIN)) {
1129
+ return rb_float_new(negative ? -0.0 : 0.0);
1130
+ }
1131
+
1132
+ if (RB_UNLIKELY(mantissa_digits > 18 || mantissa_digits + exponent < -307)) {
1133
+ return json_decode_large_float(start, end - start);
1134
+ }
1135
+
1136
+ return DBL2NUM(ffp_s2d(exponent, mantissa, negative));
1137
+ }
1138
+
1139
+ static inline VALUE json_decode_array(JSON_ParserState *state, JSON_ParserConfig *config, long count)
1140
+ {
1141
+ VALUE array = rb_ary_new_from_values(count, rvalue_stack_peek(state->value_stack, count));
1142
+ rvalue_stack_pop(state->value_stack, count);
1143
+
1144
+ if (config->freeze) {
1145
+ RB_OBJ_FREEZE(array);
1146
+ }
1147
+
1148
+ return array;
1149
+ }
1150
+
1151
+ static VALUE json_find_duplicated_key(size_t count, const VALUE *pairs)
1152
+ {
1153
+ VALUE set = rb_hash_new_capa(count / 2);
1154
+ for (size_t index = 0; index < count; index += 2) {
1155
+ size_t before = RHASH_SIZE(set);
1156
+ VALUE key = pairs[index];
1157
+ rb_hash_aset(set, key, Qtrue);
1158
+ if (RHASH_SIZE(set) == before) {
1159
+ if (RB_SYMBOL_P(key)) {
1160
+ return rb_sym2str(key);
1161
+ }
1162
+ return key;
1163
+ }
1164
+ }
1165
+ return Qfalse;
1166
+ }
1167
+
1168
+ NOINLINE(static) void emit_duplicate_key_warning(JSON_ParserState *state, VALUE duplicate_key)
1169
+ {
1170
+ VALUE message = rb_sprintf(
1171
+ "detected duplicate key %"PRIsVALUE" in JSON object. This will raise an error in json 3.0 unless enabled via `allow_duplicate_key: true`",
1172
+ rb_inspect(duplicate_key)
1173
+ );
1174
+
1175
+ emit_parse_warning(RSTRING_PTR(message), state);
1176
+ RB_GC_GUARD(message);
1177
+ }
1178
+
1179
+ NORETURN(static) void raise_duplicate_key_error(JSON_ParserState *state, VALUE duplicate_key)
1180
+ {
1181
+ VALUE message = rb_sprintf(
1182
+ "duplicate key %"PRIsVALUE,
1183
+ rb_inspect(duplicate_key)
1184
+ );
1185
+
1186
+ rb_str_concat(message, build_parse_error_message("", state));
1187
+ if (state->parser) { // line and columns can't be accurate in resumable
1188
+ rb_exc_raise(parse_error_new(state, message, 0, 0, false));
1189
+ } else {
1190
+ long line, column;
1191
+ cursor_position(state, &line, &column);
1192
+ rb_str_catf(message, " at line %ld column %ld", line, column);
1193
+ rb_exc_raise(parse_error_new(state, message, line, column, false));
1194
+ }
1195
+ }
1196
+
1197
+ NOINLINE(static) void json_on_duplicate_key(JSON_ParserState *state, JSON_ParserConfig *config, size_t count, const VALUE *pairs)
1198
+ {
1199
+ switch (config->on_duplicate_key) {
1200
+ case JSON_IGNORE:
1201
+ return;
1202
+
1203
+ case JSON_DEPRECATED:
1204
+ // Only emit the first few deprecations to avoid spamming.
1205
+ if (state->emitted_deprecations < MAX_DEPRECATIONS) {
1206
+ state->emitted_deprecations++;
1207
+ emit_duplicate_key_warning(state, json_find_duplicated_key(count, pairs));
1208
+ }
1209
+ return;
1210
+
1211
+ case JSON_RAISE:
1212
+ raise_duplicate_key_error(state, json_find_duplicated_key(count, pairs));
1213
+ return;
1214
+ }
1215
+ UNREACHABLE;
1216
+ }
1217
+
1218
+ static inline VALUE json_decode_object(JSON_ParserState *state, JSON_ParserConfig *config, size_t count)
1219
+ {
1220
+ size_t entries_count = count / 2;
1221
+ VALUE object = rb_hash_new_capa(entries_count);
1222
+ const VALUE *pairs = rvalue_stack_peek(state->value_stack, count);
1223
+ rb_hash_bulk_insert(count, pairs, object);
1224
+
1225
+ if (RB_UNLIKELY(RHASH_SIZE(object) < entries_count)) {
1226
+ json_on_duplicate_key(state, config, count, pairs);
1227
+ }
1228
+
1229
+ rvalue_stack_pop(state->value_stack, count);
1230
+
1231
+ if (config->freeze) {
1232
+ RB_OBJ_FREEZE(object);
1233
+ }
1234
+
1235
+ return object;
1236
+ }
1237
+
1238
+ static inline VALUE json_push_value(JSON_ParserState *state, JSON_ParserConfig *config, VALUE value)
1239
+ {
1240
+ if (RB_UNLIKELY(config->on_load_proc)) {
1241
+ value = rb_proc_call_with_block(config->on_load_proc, 1, &value, Qnil);
1242
+ }
1243
+ rvalue_stack_push(state->value_stack, value, state->value_stack_handle, &state->value_stack);
1244
+ return value;
1245
+ }
1246
+
1247
+ static const bool string_scan_table[256] = {
1248
+ // ASCII Control Characters
1249
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1250
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1251
+ // ASCII Characters
1252
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"'
1253
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1254
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1255
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // '\\'
1256
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1257
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1258
+ };
1259
+
1260
+ #ifdef HAVE_SIMD
1261
+ static SIMD_Implementation simd_impl = SIMD_NONE;
1262
+ #endif /* HAVE_SIMD */
1263
+
1264
+ ALWAYS_INLINE(static) bool string_scan(JSON_ParserState *state)
1265
+ {
1266
+ #ifdef HAVE_SIMD
1267
+ #if defined(HAVE_SIMD_NEON)
1268
+
1269
+ uint64_t mask = 0;
1270
+ if (string_scan_simd_neon(&state->cursor, state->end, &mask)) {
1271
+ state->cursor += trailing_zeros64(mask) >> 2;
1272
+ return true;
1273
+ }
1274
+
1275
+ #elif defined(HAVE_SIMD_SSE2)
1276
+ if (simd_impl == SIMD_SSE2) {
1277
+ int mask = 0;
1278
+ if (string_scan_simd_sse2(&state->cursor, state->end, &mask)) {
1279
+ state->cursor += trailing_zeros(mask);
1280
+ return true;
1281
+ }
1282
+ }
1283
+ #endif /* HAVE_SIMD_NEON or HAVE_SIMD_SSE2 */
1284
+ #endif /* HAVE_SIMD */
1285
+
1286
+ while (!eos(state)) {
1287
+ if (RB_UNLIKELY(string_scan_table[(unsigned char)*state->cursor])) {
1288
+ return true;
1289
+ }
1290
+ state->cursor++;
1291
+ }
1292
+
1293
+ // If the string ended with an unterminated escape sequence, we might
1294
+ // have gone past the end.
1295
+ if (RB_UNLIKELY(state->cursor > state->end)) {
1296
+ state->cursor = state->end;
1297
+ }
1298
+
1299
+ return false;
1300
+ }
1301
+
1302
+ static VALUE json_parse_escaped_string(JSON_ParserState *state, JSON_ParserConfig *config, bool is_name, const char *start)
1303
+ {
1304
+ const char *backslashes[JSON_MAX_UNESCAPE_POSITIONS];
1305
+ JSON_UnescapePositions positions = {
1306
+ .size = 0,
1307
+ .positions = backslashes,
1308
+ .additional_backslashes = 0,
1309
+ };
1310
+
1311
+ do {
1312
+ switch (*state->cursor) {
1313
+ case '"': {
1314
+ VALUE string = json_string_unescape(state, config, start, state->cursor, is_name, &positions);
1315
+ state->cursor++;
1316
+ return string;
1317
+ }
1318
+ case '\\': {
1319
+ if (RB_LIKELY(positions.size < JSON_MAX_UNESCAPE_POSITIONS)) {
1320
+ backslashes[positions.size] = state->cursor;
1321
+ positions.size++;
1322
+ } else {
1323
+ positions.additional_backslashes++;
1324
+ }
1325
+ state->cursor++;
1326
+ break;
1327
+ }
1328
+ default:
1329
+ if (!config->allow_control_characters) {
1330
+ raise_syntax_error("invalid ASCII control character in string: %s", state);
1331
+ }
1332
+ break;
1333
+ }
1334
+
1335
+ state->cursor++;
1336
+ } while (string_scan(state));
1337
+
1338
+ return Qundef;
1339
+ }
1340
+
1341
+ ALWAYS_INLINE(static) VALUE json_parse_string(JSON_ParserState *state, JSON_ParserConfig *config, bool is_name)
1342
+ {
1343
+ state->cursor++;
1344
+ const char *start = state->cursor;
1345
+
1346
+ if (RB_UNLIKELY(!string_scan(state))) {
1347
+ return Qundef;
1348
+ }
1349
+
1350
+ VALUE string;
1351
+ if (RB_LIKELY(*state->cursor == '"')) {
1352
+ string = json_string_fastpath(state, config, start, state->cursor, is_name);
1353
+ state->cursor++;
1354
+ }
1355
+ else {
1356
+ string = json_parse_escaped_string(state, config, is_name, start);
1357
+ }
1358
+
1359
+ return string;
1360
+ }
1361
+
1362
+ #if JSON_CPU_LITTLE_ENDIAN_64BITS
1363
+ // From: https://lemire.me/blog/2022/01/21/swar-explained-parsing-eight-digits/
1364
+ // Additional References:
1365
+ // https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
1366
+ // http://0x80.pl/notesen/2014-10-12-parsing-decimal-numbers-part-1-swar.html
1367
+ static inline uint64_t decode_8digits_unrolled(uint64_t val) {
1368
+ const uint64_t mask = 0x000000FF000000FF;
1369
+ const uint64_t mul1 = 0x000F424000000064; // 100 + (1000000ULL << 32)
1370
+ const uint64_t mul2 = 0x0000271000000001; // 1 + (10000ULL << 32)
1371
+ val -= 0x3030303030303030;
1372
+ val = (val * 10) + (val >> 8); // val = (val * 2561) >> 8;
1373
+ val = (((val & mask) * mul1) + (((val >> 16) & mask) * mul2)) >> 32;
1374
+ return val;
1375
+ }
1376
+
1377
+ static inline uint64_t decode_4digits_unrolled(uint32_t val) {
1378
+ const uint32_t mask = 0x000000FF;
1379
+ const uint32_t mul1 = 100;
1380
+ val -= 0x30303030;
1381
+ val = (val * 10) + (val >> 8); // val = (val * 2561) >> 8;
1382
+ val = ((val & mask) * mul1) + (((val >> 16) & mask));
1383
+ return val;
1384
+ }
1385
+ #endif
1386
+
1387
+ static inline int json_parse_digits(JSON_ParserState *state, uint64_t *accumulator)
1388
+ {
1389
+ const char *start = state->cursor;
1390
+
1391
+ #if JSON_CPU_LITTLE_ENDIAN_64BITS
1392
+ while (rest(state) >= sizeof(uint64_t)) {
1393
+ uint64_t next_8bytes;
1394
+ memcpy(&next_8bytes, state->cursor, sizeof(uint64_t));
1395
+
1396
+ // From: https://github.com/simdjson/simdjson/blob/32b301893c13d058095a07d9868edaaa42ee07aa/include/simdjson/generic/numberparsing.h#L333
1397
+ // Branchless version of: http://0x80.pl/articles/swar-digits-validate.html
1398
+ uint64_t match = (next_8bytes & 0xF0F0F0F0F0F0F0F0) | (((next_8bytes + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0) >> 4);
1399
+
1400
+ if (match == 0x3333333333333333) { // 8 consecutive digits
1401
+ *accumulator = (*accumulator * 100000000) + decode_8digits_unrolled(next_8bytes);
1402
+ state->cursor += 8;
1403
+ continue;
1404
+ }
1405
+
1406
+ uint32_t consecutive_digits = trailing_zeros64(match ^ 0x3333333333333333) / CHAR_BIT;
1407
+
1408
+ if (consecutive_digits >= 4) {
1409
+ *accumulator = (*accumulator * 10000) + decode_4digits_unrolled((uint32_t)next_8bytes);
1410
+ state->cursor += 4;
1411
+ consecutive_digits -= 4;
1412
+ }
1413
+
1414
+ while (consecutive_digits) {
1415
+ *accumulator = *accumulator * 10 + (*state->cursor - '0');
1416
+ consecutive_digits--;
1417
+ state->cursor++;
1418
+ }
1419
+
1420
+ return (int)(state->cursor - start);
1421
+ }
1422
+ #endif
1423
+
1424
+ char next_char;
1425
+ while (rb_isdigit(next_char = peek(state))) {
1426
+ *accumulator = *accumulator * 10 + (next_char - '0');
1427
+ state->cursor++;
1428
+ }
1429
+ return (int)(state->cursor - start);
1430
+ }
1431
+
1432
+ static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
1433
+ {
1434
+ bool integer = true;
1435
+ const char first_digit = *state->cursor;
1436
+
1437
+ // Variables for Ryu optimization - extract digits during parsing
1438
+ int64_t exponent = 0;
1439
+ int decimal_point_pos = -1;
1440
+ uint64_t mantissa = 0;
1441
+
1442
+ // Parse integer part and extract mantissa digits
1443
+ int mantissa_digits = json_parse_digits(state, &mantissa);
1444
+
1445
+ if (RB_UNLIKELY((first_digit == '0' && mantissa_digits > 1) || (negative && mantissa_digits == 0))) {
1446
+ return Qundef;
1447
+ }
1448
+
1449
+ // Parse fractional part
1450
+ if (peek(state) == '.') {
1451
+ integer = false;
1452
+ decimal_point_pos = mantissa_digits; // Remember position of decimal point
1453
+ state->cursor++;
1454
+
1455
+ int fractional_digits = json_parse_digits(state, &mantissa);
1456
+ mantissa_digits += fractional_digits;
1457
+
1458
+ if (RB_UNLIKELY(!fractional_digits)) {
1459
+ return Qundef;
1460
+ }
1461
+ }
1462
+
1463
+ // Parse exponent
1464
+ if (rb_tolower(peek(state)) == 'e') {
1465
+ integer = false;
1466
+ state->cursor++;
1467
+
1468
+ bool negative_exponent = false;
1469
+ const char next_char = peek(state);
1470
+ if (next_char == '-' || next_char == '+') {
1471
+ negative_exponent = next_char == '-';
1472
+ state->cursor++;
1473
+ }
1474
+
1475
+ uint64_t abs_exponent = 0;
1476
+ int exponent_digits = json_parse_digits(state, &abs_exponent);
1477
+
1478
+ if (RB_UNLIKELY(!exponent_digits)) {
1479
+ return Qundef;
1480
+ }
1481
+
1482
+ if (RB_UNLIKELY(exponent_digits >= 20 || abs_exponent > (uint64_t)INT64_MAX)) {
1483
+ exponent = negative_exponent ? INT64_MIN : INT64_MAX;
1484
+ } else {
1485
+ exponent = negative_exponent ? -(int64_t)abs_exponent : (int64_t)abs_exponent;
1486
+ }
1487
+ }
1488
+
1489
+ if (integer) {
1490
+ return json_decode_integer(mantissa, mantissa_digits, negative, start, state->cursor);
1491
+ }
1492
+
1493
+ // Adjust exponent based on decimal point position
1494
+ if (decimal_point_pos >= 0) {
1495
+ exponent -= (mantissa_digits - decimal_point_pos);
1496
+ }
1497
+
1498
+ return json_decode_float(config, mantissa, mantissa_digits, exponent, negative, start, state->cursor);
1499
+ }
1500
+
1501
+ // How many values (array elements, or interleaved object keys+values) have been
1502
+ // pushed onto the rvalue stack since this container opened. Used to size the
1503
+ // bulk decode on close, and to tell the first key/colon from later ones.
1504
+ static inline long json_frame_entry_count(const json_frame *frame, const rvalue_stack *value_stack)
1505
+ {
1506
+ return value_stack->head - frame->value_stack_head;
1507
+ }
1508
+
1509
+ // A complete value now sits on top of the rvalue stack. Advance the frame that
1510
+ // was waiting for it: the root document is done, or the enclosing container
1511
+ // moves on to expecting a ',' or its closing bracket. The caller passes the
1512
+ // frame it already has in hand -- the one that was expecting the value -- which
1513
+ // after a container close is the freshly re-exposed parent.
1514
+ static inline enum json_frame_phase json_value_completed(json_frame *frame)
1515
+ {
1516
+ JSON_ASSERT((int)JSON_PHASE_DONE == (int)JSON_FRAME_ROOT);
1517
+ JSON_ASSERT((int)JSON_PHASE_ARRAY_COMMA == (int)JSON_FRAME_ARRAY);
1518
+ JSON_ASSERT((int)JSON_PHASE_OBJECT_COMMA == (int)JSON_FRAME_OBJECT);
1519
+
1520
+ return frame->phase = (enum json_frame_phase) frame->type;
1521
+ }
1522
+
1523
+ ALWAYS_INLINE(static) void json_match_keyword(JSON_ParserState *state, const char *keyword, size_t offset)
1524
+ {
1525
+ // It is assumed that since `keyword` is always a literal, the compiler is able to constantize this
1526
+ // `strlen` and several other computations in that routine.
1527
+
1528
+ size_t len = strlen(keyword);
1529
+
1530
+ // Note: memcmp with a small power of two and a literal string compile to an integer comparison /
1531
+ // That's why we sometime compare starting from the first byte and sometimes from the second.
1532
+ if (rest(state) >= len && (memcmp(state->cursor + offset, keyword + offset, len - offset) == 0)) {
1533
+ state->cursor += len;
1534
+ return;
1535
+ }
1536
+
1537
+ bool eos = rest(state) < len && memcmp(state->cursor, keyword, rest(state)) == 0;
1538
+ raise_parse_error("unexpected token %s", state, eos);
1539
+ }
1540
+
1541
+ // Parse an arbitrary JSON value iteratively. This is a state machine driven
1542
+ // entirely by the top frame's phase so it can stop at any value boundary and
1543
+ // resume purely from the frame stack. A JSON_FRAME_ROOT frame sits at the
1544
+ // bottom of the stack, so the stack is never empty mid-parse and the document
1545
+ // itself is just another frame whose value, once parsed, leaves its phase DONE.
1546
+ // When invoked in resumable mode, it returns true after parsing a complete document.
1547
+ // If reaching EOS without having parsed a complete document, either returns false
1548
+ // of raise a JSON::ParserError tagged with `@eos=true`.
1549
+ ALWAYS_INLINE(static) bool json_parse_any(JSON_ParserState *state, JSON_ParserConfig *config, bool resumable)
1550
+ {
1551
+ json_frame *frame = json_frame_stack_peek(state->frames);
1552
+
1553
+ switch (frame->phase) {
1554
+ case JSON_PHASE_DONE: JSON_UNREACHABLE_RETURN(false);
1555
+ case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA;
1556
+ case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA;
1557
+ case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE;
1558
+ case JSON_PHASE_OBJECT_KEY: goto JSON_PHASE_OBJECT_KEY;
1559
+ case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON;
1560
+ }
1561
+ JSON_UNREACHABLE_RETURN(false);
1562
+
1563
+ JSON_PHASE_VALUE: {
1564
+ json_eat_whitespace(state, config, true);
1565
+
1566
+ VALUE value;
1567
+ const char *value_start = state->cursor;
1568
+
1569
+ switch (peek(state)) {
1570
+ case 'n':
1571
+ json_match_keyword(state, "null", 0);
1572
+ value = Qnil;
1573
+ break;
1574
+
1575
+ case 't':
1576
+ json_match_keyword(state, "true", 0);
1577
+ value = Qtrue;
1578
+ break;
1579
+
1580
+ case 'f':
1581
+ json_match_keyword(state, "false", 1);
1582
+ value = Qfalse;
1583
+ break;
1584
+
1585
+ case 'N':
1586
+ if (!config->allow_nan) {
1587
+ raise_syntax_error("unexpected token %s", state);
1588
+ }
1589
+
1590
+ json_match_keyword(state, "NaN", 1);
1591
+ value = CNaN;
1592
+ break;
1593
+
1594
+ case 'I':
1595
+ if (!config->allow_nan) {
1596
+ raise_syntax_error("unexpected token %s", state);
1597
+ }
1598
+
1599
+ json_match_keyword(state, "Infinity", 0);
1600
+ value = CInfinity;
1601
+ break;
1602
+
1603
+ case '-': {
1604
+ state->cursor++;
1605
+
1606
+ value = json_parse_number(state, config, true, value_start);
1607
+
1608
+ if (RB_UNLIKELY(UNDEF_P(value) && config->allow_nan && peek(state) == 'I')) {
1609
+ state->cursor = value_start;
1610
+ json_match_keyword(state, "-Infinity", 1);
1611
+ value = CMinusInfinity;
1612
+ break;
1613
+ }
1614
+
1615
+ // Top level numbers are ambiguous when parsing streams, we can't
1616
+ // know if we parsed all the digits if we hit EOS.
1617
+ if (RB_UNLIKELY(resumable && eos(state))) {
1618
+ state->cursor = value_start;
1619
+ return false;
1620
+ }
1621
+
1622
+ if (RB_UNLIKELY(UNDEF_P(value))) {
1623
+ raise_syntax_error_at("invalid number: %s", state, value_start);
1624
+ }
1625
+ break;
1626
+ }
1627
+
1628
+ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': {
1629
+ value = json_parse_number(state, config, false, value_start);
1630
+
1631
+ // Top level numbers are ambiguous when parsing streams, we can't
1632
+ // know if we parsed all the digits if we hit EOS.
1633
+ if (RB_UNLIKELY(resumable && eos(state))) {
1634
+ state->cursor = value_start;
1635
+ return false;
1636
+ }
1637
+
1638
+ if (RB_UNLIKELY(UNDEF_P(value))) {
1639
+ raise_syntax_error_at("invalid number: %s", state, value_start);
1640
+ }
1641
+ break;
1642
+ }
1643
+
1644
+ case '"': {
1645
+ // %r{\A"[^"\\\t\n\x00]*(?:\\[bfnrtu\\/"][^"\\]*)*"}
1646
+ value = json_parse_string(state, config, false);
1647
+
1648
+ if (RB_UNLIKELY(UNDEF_P(value))) {
1649
+ bool is_eos = eos(state);
1650
+ if (resumable && is_eos) {
1651
+ state->cursor = value_start;
1652
+ return false;
1653
+ }
1654
+ raise_parse_error("unexpected end of input, expected closing \"", state, is_eos);
1655
+ }
1656
+ break;
1657
+ }
1658
+
1659
+ case '[': {
1660
+ state->cursor++;
1661
+ json_eat_whitespace(state, config, true);
1662
+
1663
+ const char next = peek(state);
1664
+ if (next == ']') {
1665
+ state->cursor++;
1666
+ value = json_decode_array(state, config, 0);
1667
+ break;
1668
+ } else if (resumable && eos(state)) {
1669
+ state->cursor = value_start;
1670
+ return false;
1671
+ }
1672
+
1673
+ state->current_nesting++;
1674
+ if (RB_UNLIKELY(config->max_nesting && (config->max_nesting < state->current_nesting))) {
1675
+ rb_raise(eNestingError, "nesting of %d is too deep", state->current_nesting);
1676
+ }
1677
+ state->in_array++;
1678
+
1679
+ // Phase stays VALUE: the next iteration reads the first element.
1680
+ frame = json_frame_stack_push(state, (json_frame){
1681
+ .type = JSON_FRAME_ARRAY,
1682
+ .phase = JSON_PHASE_VALUE,
1683
+ .value_stack_head = state->value_stack->head,
1684
+ });
1685
+ goto JSON_PHASE_VALUE;
1686
+ }
1687
+
1688
+ case '{': {
1689
+ state->cursor++;
1690
+ json_eat_whitespace(state, config, true);
1691
+
1692
+ if (peek(state) == '}') {
1693
+ state->cursor++;
1694
+ value = json_decode_object(state, config, 0);
1695
+ break;
1696
+ } else if (resumable && eos(state)) {
1697
+ state->cursor = value_start;
1698
+ return false;
1699
+ }
1700
+
1701
+ state->current_nesting++;
1702
+ if (RB_UNLIKELY(config->max_nesting && (config->max_nesting < state->current_nesting))) {
1703
+ rb_raise(eNestingError, "nesting of %d is too deep", state->current_nesting);
1704
+ }
1705
+
1706
+ // Phase KEY: the next iteration reads the first key.
1707
+ frame = json_frame_stack_push(state, (json_frame){
1708
+ .type = JSON_FRAME_OBJECT,
1709
+ .phase = JSON_PHASE_OBJECT_KEY,
1710
+ .value_stack_head = state->value_stack->head,
1711
+ .start_offset = value_start - state->start,
1712
+ });
1713
+ goto JSON_PHASE_OBJECT_KEY;
1714
+ }
1715
+
1716
+ case 0:
1717
+ // peek() returns 0 both at end-of-stream and for a literal NUL byte in the
1718
+ // buffer. Only a genuine EOS means "feed me more"; a NUL byte that is not at
1719
+ // EOS is just an invalid character.
1720
+ if (eos(state)) {
1721
+ return false;
1722
+ } else {
1723
+ raise_syntax_error("unexpected NULL byte: %s", state);
1724
+ }
1725
+ default:
1726
+ raise_syntax_error("unexpected character: %s", state);
1727
+ }
1728
+
1729
+ json_push_value(state, config, value);
1730
+ json_value_completed(frame);
1731
+
1732
+ switch (frame->phase) {
1733
+ case JSON_PHASE_DONE: return true;
1734
+ case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA;
1735
+ case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA;
1736
+ case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE;
1737
+ case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false);
1738
+ case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON;
1739
+ }
1740
+ JSON_UNREACHABLE_RETURN(false);
1741
+ }
1742
+
1743
+ JSON_PHASE_OBJECT_KEY: {
1744
+ JSON_ASSERT(frame->type == JSON_FRAME_OBJECT);
1745
+
1746
+ json_eat_whitespace(state, config, true);
1747
+
1748
+ const char *start = state->cursor;
1749
+
1750
+ if (RB_LIKELY(peek(state) == '"')) {
1751
+ VALUE string = json_parse_string(state, config, true);
1752
+ if (UNDEF_P(string)) {
1753
+ if (resumable) {
1754
+ state->cursor = start;
1755
+ return false;
1756
+ } else {
1757
+ raise_syntax_error("unexpected end of input, expected closing \"", state);
1758
+ }
1759
+ }
1760
+ json_push_value(state, config, string);
1761
+ frame->phase = JSON_PHASE_OBJECT_COLON;
1762
+ goto JSON_PHASE_OBJECT_COLON;
1763
+ } else if (resumable && eos(state)) {
1764
+ return false;
1765
+ } else {
1766
+ // The message differs for the first key vs. a key after a
1767
+ // ',': the first is the only one reached with nothing pushed
1768
+ // for this object yet.
1769
+ if (json_frame_entry_count(frame, state->value_stack) == 0) {
1770
+ raise_syntax_error("expected object key, got %s", state);
1771
+ } else {
1772
+ raise_syntax_error("expected object key, got: %s", state);
1773
+ }
1774
+ }
1775
+ JSON_UNREACHABLE_RETURN(false);
1776
+ }
1777
+
1778
+ JSON_PHASE_OBJECT_COLON: {
1779
+ JSON_ASSERT(frame->type == JSON_FRAME_OBJECT);
1780
+
1781
+ json_eat_whitespace(state, config, true);
1782
+
1783
+ if (RB_LIKELY(peek(state) == ':')) {
1784
+ state->cursor++;
1785
+ frame->phase = JSON_PHASE_VALUE;
1786
+ goto JSON_PHASE_VALUE;
1787
+ } else if (resumable && eos(state)) {
1788
+ return false;
1789
+ } else {
1790
+ // First colon (only the first pair's key is pushed, nothing
1791
+ // else) vs. a later one.
1792
+ if (json_frame_entry_count(frame, state->value_stack) == 1) {
1793
+ raise_syntax_error("expected ':' after object key", state);
1794
+ } else {
1795
+ raise_syntax_error("expected ':' after object key, got: %s", state);
1796
+ }
1797
+ }
1798
+ JSON_UNREACHABLE_RETURN(false);
1799
+ }
1800
+
1801
+ JSON_PHASE_ARRAY_COMMA: {
1802
+ JSON_ASSERT(frame->type == JSON_FRAME_ARRAY);
1803
+
1804
+ json_eat_whitespace(state, config, true);
1805
+
1806
+ const char next_char = peek(state);
1807
+
1808
+ if (RB_LIKELY(next_char == ',')) {
1809
+ state->cursor++;
1810
+ if (config->allow_trailing_comma) {
1811
+ json_eat_whitespace(state, config, true);
1812
+ if (peek(state) == ']') {
1813
+ // Trailing comma: stay in COMMA to close on the next iteration.
1814
+ goto JSON_PHASE_ARRAY_COMMA;
1815
+ }
1816
+ }
1817
+ frame->phase = JSON_PHASE_VALUE;
1818
+ goto JSON_PHASE_VALUE;
1819
+ } else if (next_char == ']') {
1820
+ state->cursor++;
1821
+ long count = json_frame_entry_count(frame, state->value_stack);
1822
+ state->current_nesting--;
1823
+ state->in_array--;
1824
+
1825
+ json_push_value(state, config, json_decode_array(state, config, count));
1826
+ json_frame_stack_pop(state->frames);
1827
+ frame = json_frame_stack_peek(state->frames);
1828
+
1829
+ json_value_completed(frame);
1830
+
1831
+ switch (frame->phase) {
1832
+ case JSON_PHASE_DONE: return true;
1833
+ case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA;
1834
+ case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA;
1835
+ case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE;
1836
+ case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false);
1837
+ case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON;
1838
+ }
1839
+ } else if (resumable && eos(state)) {
1840
+ return false;
1841
+ } else {
1842
+ raise_syntax_error("expected ',' or ']' after array value", state);
1843
+ }
1844
+ JSON_UNREACHABLE_RETURN(false);
1845
+ }
1846
+
1847
+ JSON_PHASE_OBJECT_COMMA: {
1848
+ JSON_ASSERT(frame->type == JSON_FRAME_OBJECT);
1849
+
1850
+ json_eat_whitespace(state, config, true);
1851
+ const char next_char = peek(state);
1852
+
1853
+ if (RB_LIKELY(next_char == ',')) {
1854
+ state->cursor++;
1855
+ json_eat_whitespace(state, config, true);
1856
+
1857
+ if (config->allow_trailing_comma) {
1858
+ if (peek(state) == '}') {
1859
+ // Trailing comma: stay in COMMA to close on the next iteration.
1860
+ goto JSON_PHASE_OBJECT_COMMA;
1861
+ }
1862
+ }
1863
+
1864
+ frame->phase = JSON_PHASE_OBJECT_KEY;
1865
+ goto JSON_PHASE_OBJECT_KEY;
1866
+ } else if (next_char == '}') {
1867
+ state->cursor++;
1868
+ state->current_nesting--;
1869
+ size_t count = json_frame_entry_count(frame, state->value_stack);
1870
+
1871
+ // Temporary rewind cursor in case an error is raised
1872
+ const char *final_cursor = state->cursor;
1873
+ state->cursor = state->start + frame->start_offset;
1874
+ VALUE object = json_decode_object(state, config, count);
1875
+ state->cursor = final_cursor;
1876
+
1877
+ json_push_value(state, config, object);
1878
+ json_frame_stack_pop(state->frames);
1879
+ frame = json_frame_stack_peek(state->frames);
1880
+ json_value_completed(frame);
1881
+
1882
+ switch (frame->phase) {
1883
+ case JSON_PHASE_DONE: return true;
1884
+ case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA;
1885
+ case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA;
1886
+ case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE;
1887
+ case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false);
1888
+ case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON;
1889
+ }
1890
+ } else if (resumable && eos(state)) {
1891
+ return false;
1892
+ } else {
1893
+ raise_syntax_error("expected ',' or '}' after object value, got: %s", state);
1894
+ }
1895
+ JSON_UNREACHABLE_RETURN(false);
1896
+ }
1897
+
1898
+ JSON_UNREACHABLE_RETURN(false);
1899
+ }
1900
+
1901
+ static void json_ensure_eof(JSON_ParserState *state, JSON_ParserConfig *config)
1902
+ {
1903
+ json_eat_whitespace(state, config, true);
1904
+ if (!eos(state)) {
1905
+ raise_syntax_error("unexpected token at end of stream %s", state);
1906
+ }
1907
+ }
1908
+
1909
+ /*
1910
+ * Document-class: JSON::Ext::Parser
1911
+ *
1912
+ * This is the JSON parser implemented as a C extension. It can be configured
1913
+ * to be used by setting
1914
+ *
1915
+ * JSON.parser = JSON::Ext::Parser
1916
+ *
1917
+ * with the method parser= in JSON.
1918
+ *
1919
+ */
1920
+
1921
+ static VALUE convert_encoding(VALUE source)
1922
+ {
1923
+ StringValue(source);
1924
+ int encindex = RB_ENCODING_GET(source);
1925
+
1926
+ if (RB_LIKELY(encindex == utf8_encindex)) {
1927
+ return source;
1928
+ }
1929
+
1930
+ if (encindex == binary_encindex) {
1931
+ // For historical reason, we silently reinterpret binary strings as UTF-8
1932
+ return rb_enc_associate_index(rb_str_dup(source), utf8_encindex);
1933
+ }
1934
+
1935
+ source = rb_funcall(source, i_encode, 1, Encoding_UTF_8);
1936
+ StringValue(source);
1937
+ return source;
1938
+ }
1939
+
1940
+ struct parser_config_init_args {
1941
+ JSON_ParserConfig *config;
1942
+ VALUE self;
1943
+ VALUE unknown_keywords;
1944
+ bool strict;
1945
+ };
1946
+
1947
+ static void parser_config_wb_write(VALUE self, VALUE *dest, VALUE val)
1948
+ {
1949
+ *dest = val;
1950
+ if (self) RB_OBJ_WRITTEN(self, Qundef, val);
1951
+ }
1952
+
1953
+ static int parser_config_init_i(VALUE key, VALUE val, VALUE data)
1954
+ {
1955
+ struct parser_config_init_args *args = (struct parser_config_init_args *)data;
1956
+ JSON_ParserConfig *config = args->config;
1957
+ VALUE self = args->self;
1958
+
1959
+ if (key == sym_max_nesting) { config->max_nesting = RTEST(val) ? FIX2INT(val) : 0; }
1960
+ else if (key == sym_allow_nan) { config->allow_nan = RTEST(val); }
1961
+ else if (key == sym_allow_trailing_comma) { config->allow_trailing_comma = RTEST(val); }
1962
+ else if (key == sym_allow_comments) { config->on_comment = RTEST(val) ? JSON_IGNORE : JSON_RAISE; }
1963
+ else if (key == sym_allow_control_characters) { config->allow_control_characters = RTEST(val); }
1964
+ else if (key == sym_allow_invalid_escape) { config->allow_invalid_escape = RTEST(val); }
1965
+ else if (key == sym_symbolize_names) { config->symbolize_names = RTEST(val); }
1966
+ else if (key == sym_freeze) { config->freeze = RTEST(val); }
1967
+ else if (key == sym_on_load) { parser_config_wb_write(self, &config->on_load_proc, RTEST(val) ? val : Qfalse); }
1968
+ else if (key == sym_allow_duplicate_key) { config->on_duplicate_key = RTEST(val) ? JSON_IGNORE : JSON_RAISE; }
1969
+ else if (key == sym_decimal_class) {
1970
+ if (RTEST(val)) {
1971
+ if (rb_respond_to(val, i_try_convert)) {
1972
+ parser_config_wb_write(self, &config->decimal_class, val);
1973
+ config->decimal_method_id = i_try_convert;
1974
+ } else if (rb_respond_to(val, i_new)) {
1975
+ parser_config_wb_write(self, &config->decimal_class, val);
1976
+ config->decimal_method_id = i_new;
1977
+ } else if (RB_TYPE_P(val, T_CLASS)) {
1978
+ VALUE name = rb_class_name(val);
1979
+ const char *name_cstr = RSTRING_PTR(name);
1980
+ const char *last_colon = strrchr(name_cstr, ':');
1981
+ if (last_colon) {
1982
+ const char *mod_path_end = last_colon - 1;
1983
+ VALUE mod_path = rb_str_substr(name, 0, mod_path_end - name_cstr);
1984
+ parser_config_wb_write(self, &config->decimal_class, rb_path_to_class(mod_path));
1985
+
1986
+ const char *method_name_beg = last_colon + 1;
1987
+ long before_len = method_name_beg - name_cstr;
1988
+ long len = RSTRING_LEN(name) - before_len;
1989
+ VALUE method_name = rb_str_substr(name, before_len, len);
1990
+ config->decimal_method_id = SYM2ID(rb_str_intern(method_name));
1991
+ } else {
1992
+ parser_config_wb_write(self, &config->decimal_class, rb_mKernel);
1993
+ config->decimal_method_id = SYM2ID(rb_str_intern(name));
1994
+ }
1995
+ }
1996
+ }
1997
+ }
1998
+ else if (args->strict) {
1999
+ if (!args->unknown_keywords) {
2000
+ args->unknown_keywords = rb_obj_hide(rb_ary_new());
2001
+ }
2002
+ rb_ary_push(args->unknown_keywords, key);
2003
+ }
2004
+
2005
+ return ST_CONTINUE;
2006
+ }
2007
+
2008
+ static void parser_config_init(JSON_ParserConfig *config, VALUE opts, VALUE self, bool strict)
2009
+ {
2010
+ config->max_nesting = 100;
2011
+
2012
+ struct parser_config_init_args args = {
2013
+ .config = config,
2014
+ .self = self,
2015
+ .strict = strict,
2016
+ };
2017
+
2018
+ if (NIL_P(opts)) return;
2019
+ Check_Type(opts, T_HASH);
2020
+ if (RHASH_SIZE(opts) == 0) return;
2021
+
2022
+ // We assume in most cases few keys are set so it's faster to go over
2023
+ // the provided keys than to check all possible keys.
2024
+ rb_hash_foreach(opts, parser_config_init_i, (VALUE)&args);
2025
+
2026
+ if (RB_UNLIKELY(args.unknown_keywords)) {
2027
+ if (RARRAY_LEN(args.unknown_keywords) == 1) {
2028
+ rb_raise(rb_eArgError, "unknown keyword: %" PRIsVALUE, RARRAY_AREF(args.unknown_keywords, 0));
2029
+ }
2030
+ else {
2031
+ VALUE keywords = rb_ary_join(args.unknown_keywords, rb_utf8_str_new_cstr(", "));
2032
+ rb_raise(rb_eArgError, "unknown keywords: %" PRIsVALUE, keywords);
2033
+ }
2034
+ }
2035
+ }
2036
+
2037
+ /*
2038
+ * call-seq: new(opts => {})
2039
+ *
2040
+ * Creates a new JSON::Ext::ParserConfig instance.
2041
+ *
2042
+ * Argument +opts+, if given, contains a \Hash of options for the parsing.
2043
+ * See {Parsing Options}[#module-JSON-label-Parsing+Options].
2044
+ *
2045
+ */
2046
+ static VALUE cParserConfig_initialize(VALUE self, VALUE opts)
2047
+ {
2048
+ rb_check_frozen(self);
2049
+ GET_PARSER_CONFIG;
2050
+
2051
+ parser_config_init(config, opts, self, false);
2052
+
2053
+ return self;
2054
+ }
2055
+
2056
+ static VALUE cParser_parse(JSON_ParserConfig *config, VALUE src)
2057
+ {
2058
+ VALUE Vsource = convert_encoding(src);
2059
+
2060
+ // Ensure the string isn't mutated under us.
2061
+ // The classic API to use is `rb_str_locktmp`, but then we'd
2062
+ // need to use `rb_protect` to make sure we always unlock.
2063
+ if (Vsource == src) {
2064
+ Vsource = rb_str_new_frozen(Vsource);
2065
+ }
2066
+
2067
+ VALUE rvalue_stack_buffer[RVALUE_STACK_INITIAL_CAPA];
2068
+ rvalue_stack value_stack = {
2069
+ .type = RVALUE_STACK_STACK_ALLOCATED,
2070
+ .ptr = rvalue_stack_buffer,
2071
+ .capa = RVALUE_STACK_INITIAL_CAPA,
2072
+ };
2073
+
2074
+ // Seed the frame stack with the root frame, establishing the invariant that
2075
+ // json_parse_any always has a top frame to dispatch on (so the stack is never
2076
+ // empty mid-parse).
2077
+ json_frame frame_stack_buffer[JSON_FRAME_STACK_INITIAL_CAPA];
2078
+ frame_stack_buffer[0] = (json_frame){
2079
+ .type = JSON_FRAME_ROOT,
2080
+ .phase = JSON_PHASE_VALUE,
2081
+ };
2082
+ json_frame_stack frames = {
2083
+ .type = RVALUE_STACK_STACK_ALLOCATED,
2084
+ .ptr = frame_stack_buffer,
2085
+ .capa = JSON_FRAME_STACK_INITIAL_CAPA,
2086
+ .head = 1,
2087
+ };
2088
+
2089
+ long len;
2090
+ const char *start;
2091
+
2092
+ RSTRING_GETMEM(Vsource, start, len);
2093
+
2094
+ VALUE value_stack_handle = 0;
2095
+ VALUE frame_stack_handle = 0;
2096
+ JSON_ParserState _state = {
2097
+ .start = start,
2098
+ .cursor = start,
2099
+ .end = start + len,
2100
+ .value_stack = &value_stack,
2101
+ .value_stack_handle = &value_stack_handle,
2102
+ .frames = &frames,
2103
+ .frame_stack_handle = &frame_stack_handle,
2104
+ };
2105
+ JSON_ParserState *state = &_state;
2106
+
2107
+ bool complete = json_parse_any(state, config, false);
2108
+
2109
+ // The root document value is parsed; it is the lone survivor on
2110
+ // the rvalue stack.
2111
+ VALUE result = complete ? *rvalue_stack_peek(state->value_stack, 1) : Qundef;
2112
+
2113
+ // This may be skipped in case of exception, but
2114
+ // it won't cause a leak.
2115
+ rvalue_stack_eagerly_release(value_stack_handle);
2116
+ json_frame_stack_eagerly_release(frame_stack_handle);
2117
+ RB_GC_GUARD(value_stack_handle);
2118
+ RB_GC_GUARD(frame_stack_handle);
2119
+ RB_GC_GUARD(Vsource);
2120
+
2121
+ if (complete) {
2122
+ json_ensure_eof(state, config);
2123
+ } else {
2124
+ raise_eos_error("unexpected end of input", state);
2125
+ }
2126
+
2127
+ return result;
2128
+ }
2129
+
2130
+ /*
2131
+ * call-seq: parse(source)
2132
+ *
2133
+ * Parses the current JSON text _source_ and returns the complete data
2134
+ * structure as a result.
2135
+ * It raises JSON::ParserError if fail to parse.
2136
+ */
2137
+ static VALUE cParserConfig_parse(VALUE self, VALUE Vsource)
2138
+ {
2139
+ GET_PARSER_CONFIG;
2140
+ return cParser_parse(config, Vsource);
2141
+ }
2142
+
2143
+ static VALUE cParser_m_parse(VALUE klass, VALUE Vsource, VALUE opts)
2144
+ {
2145
+ JSON_ParserConfig _config = {0};
2146
+ JSON_ParserConfig *config = &_config;
2147
+ parser_config_init(config, opts, Qfalse, false);
2148
+
2149
+ return cParser_parse(config, Vsource);
2150
+ }
2151
+
2152
+ static void JSON_ParserConfig_mark(void *ptr)
2153
+ {
2154
+ JSON_ParserConfig *config = ptr;
2155
+ rb_gc_mark_movable(config->on_load_proc);
2156
+ rb_gc_mark_movable(config->decimal_class);
2157
+ }
2158
+
2159
+ static size_t JSON_ParserConfig_memsize(const void *ptr)
2160
+ {
2161
+ #ifdef HAVE_RUBY_TYPED_EMBEDDABLE
2162
+ return 0;
2163
+ #else
2164
+ return sizeof(JSON_ParserConfig);
2165
+ #endif
2166
+ }
2167
+
2168
+ static void JSON_ParserConfig_compact(void *ptr)
2169
+ {
2170
+ JSON_ParserConfig *config = ptr;
2171
+ config->on_load_proc = rb_gc_location(config->on_load_proc);
2172
+ config->decimal_class = rb_gc_location(config->decimal_class);
2173
+ }
2174
+
2175
+ static const rb_data_type_t JSON_ParserConfig_type = {
2176
+ .wrap_struct_name = "JSON::Ext::Parser/ParserConfig",
2177
+ .function = {
2178
+ .dmark = JSON_ParserConfig_mark,
2179
+ .dfree = RUBY_DEFAULT_FREE,
2180
+ .dsize = JSON_ParserConfig_memsize,
2181
+ .dcompact = JSON_ParserConfig_compact,
2182
+ },
2183
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
2184
+ };
2185
+
2186
+ static VALUE cJSON_parser_s_allocate(VALUE klass)
2187
+ {
2188
+ JSON_ParserConfig *config;
2189
+ return TypedData_Make_Struct(klass, JSON_ParserConfig, &JSON_ParserConfig_type, config);
2190
+ }
2191
+
2192
+ static void json_str_clear(VALUE str)
2193
+ {
2194
+ if (RB_OBJ_FROZEN_RAW(str)) {
2195
+ return;
2196
+ }
2197
+ rb_str_replace(str, JSON_empty_string);
2198
+ }
2199
+
2200
+ typedef struct JSON_ResumableParserStruct {
2201
+ JSON_ParserConfig config;
2202
+ JSON_ParserState state;
2203
+ rvalue_stack value_stack;
2204
+ json_frame_stack frames;
2205
+ VALUE buffer;
2206
+ size_t parsed_bytes;
2207
+ size_t incomplete_bytes;
2208
+ bool complete;
2209
+ bool in_use;
2210
+ } JSON_ResumableParser;
2211
+
2212
+ static void JSON_ResumableParser_mark(void *ptr)
2213
+ {
2214
+ JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr;
2215
+ JSON_ParserConfig_mark(&parser->config);
2216
+ rvalue_stack_mark(&parser->value_stack);
2217
+ rvalue_cache_mark(&parser->state.name_cache);
2218
+ rb_gc_mark(parser->buffer); // pin the buffer
2219
+ rb_gc_mark_movable(parser->state.parser);
2220
+ }
2221
+
2222
+ static void JSON_ResumableParser_free(void *ptr)
2223
+ {
2224
+ JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr;
2225
+ rvalue_stack_free_buffer(&parser->value_stack);
2226
+ json_frame_stack_free_buffer(&parser->frames);
2227
+ }
2228
+
2229
+ static size_t JSON_ResumableParser_memsize(const void *ptr)
2230
+ {
2231
+ const JSON_ResumableParser *parser = (const JSON_ResumableParser *)ptr;
2232
+ size_t memsize = JSON_ParserConfig_memsize(&parser->config);
2233
+ memsize += rvalue_stack_memsize(&parser->value_stack);
2234
+ memsize += json_frame_stack_memsize(&parser->frames);
2235
+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
2236
+ memsize += (
2237
+ sizeof(JSON_ResumableParser)
2238
+ - sizeof(JSON_ParserState)
2239
+ - sizeof(JSON_ParserConfig)
2240
+ - sizeof(rvalue_stack)
2241
+ - sizeof(json_frame_stack)
2242
+ );
2243
+ #endif
2244
+ return memsize;
2245
+ }
2246
+
2247
+ static void JSON_ResumableParser_compact(void *ptr)
2248
+ {
2249
+ JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr;
2250
+ JSON_ParserConfig_compact(&parser->config);
2251
+ rvalue_stack_compact(&parser->value_stack);
2252
+ rvalue_cache_compact(&parser->state.name_cache);
2253
+ parser->buffer = rb_gc_location(parser->buffer);
2254
+ parser->state.parser = rb_gc_location(parser->state.parser);
2255
+ }
2256
+
2257
+ static const rb_data_type_t JSON_ResumableParser_type = {
2258
+ .wrap_struct_name = "JSON::Ext::ResumableParser",
2259
+ .function = {
2260
+ JSON_ResumableParser_mark,
2261
+ JSON_ResumableParser_free,
2262
+ JSON_ResumableParser_memsize,
2263
+ JSON_ResumableParser_compact,
2264
+ },
2265
+ // RUBY_TYPED_WB_PROTECTED is deliberately not declared because
2266
+ // this is a superset of JSON_Parser_rvalue_stack_type, so we'd need
2267
+ // to trigger a lot of write barriers.
2268
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
2269
+ };
2270
+
2271
+ static VALUE cResumableParser_allocate(VALUE klass)
2272
+ {
2273
+ JSON_ResumableParser *parser;
2274
+ VALUE obj = TypedData_Make_Struct(klass, JSON_ResumableParser, &JSON_ResumableParser_type, parser);
2275
+ parser->state.in_array++;
2276
+ parser->state.parser = obj;
2277
+ return obj;
2278
+ }
2279
+
2280
+ static inline JSON_ResumableParser *cResumableParser_get(VALUE self)
2281
+ {
2282
+ JSON_ResumableParser *parser;
2283
+ TypedData_Get_Struct(self, JSON_ResumableParser, &JSON_ResumableParser_type, parser);
2284
+ return parser;
2285
+ }
2286
+
2287
+ /*
2288
+ * call-seq: new(opts => {})
2289
+ *
2290
+ * Creates a new JSON::ResumableParser instance.
2291
+ *
2292
+ * Argument +opts+, if given, contains a \Hash of options for the parsing.
2293
+ * See {Parsing Options}[#module-JSON-label-Parsing+Options].
2294
+ *
2295
+ * A ResumableParser is able to parse partial documents and resume parsing later
2296
+ * when more of the document is provided:
2297
+ *
2298
+ * parser = JSON::ResumableParser.new
2299
+ * parser << '{"user": "george", "role": "ad'
2300
+ * parser.parse # => false
2301
+ * parser.eos? # => true
2302
+ * parser.partial_value # => { "user" => "george", "role" => nil }
2303
+ * parser.rest # => '"ad'
2304
+ *
2305
+ * parser << 'min" }[1, 2, 3]'
2306
+ * parser.parse # => true
2307
+ * parser.value # => { "user" => "george", "role" => "admin" }
2308
+ *
2309
+ * parser.parse # => true
2310
+ * parser.value # => [1, 2, 3]
2311
+ *
2312
+ * === Limitations
2313
+ *
2314
+ * While ResumableParser is able to parse streams of documents without any
2315
+ * explicit separators between them, it is highly recommended to separate documents
2316
+ * by either spaces or newlines, as otherwise the \JSON syntax for numbers may be ambiguous.
2317
+ * When parsing a number, ResumableParser will not consider the number complete until something follows:
2318
+ *
2319
+ * parser << '123'
2320
+ * parser.parse # => false
2321
+ * parser << ' '
2322
+ * parser.parse # => true
2323
+ * parser.value # => 123
2324
+ *
2325
+ * === Security
2326
+ *
2327
+ * An incomplete document is buffered in full and there is no size limit, so when reading
2328
+ * from an untrusted source the caller is responsible for bounding how much data is fed.
2329
+ * For example:
2330
+ *
2331
+ * loop do
2332
+ * if parser.parsed_bytes > DOCUMENT_MAX_SIZE
2333
+ * raise "document too large"
2334
+ * end
2335
+ *
2336
+ * parser << read_chunk
2337
+ * while parser.parse
2338
+ * process(parser.value)
2339
+ * end
2340
+ * end
2341
+ */
2342
+ static VALUE cResumableParser_initialize(int argc, VALUE *argv, VALUE self)
2343
+ {
2344
+ rb_check_frozen(self);
2345
+
2346
+ VALUE opts = Qfalse;
2347
+ rb_scan_args_kw(RB_SCAN_ARGS_LAST_HASH_KEYWORDS, argc, argv, "0:", &opts);
2348
+ JSON_ResumableParser *parser = cResumableParser_get(self);
2349
+
2350
+ opts = argc > 0 ? argv[0] : Qnil;
2351
+ parser_config_init(&parser->config, opts, self, true);
2352
+
2353
+ return self;
2354
+ }
2355
+
2356
+ static JSON_ResumableParser *ResumableParser_acquire(VALUE self, bool lock);
2357
+
2358
+ /*
2359
+ * call-seq: self << string -> self
2360
+ *
2361
+ * Appends the given string to the parser's buffer.
2362
+ */
2363
+ static VALUE cResumableParser_feed(VALUE self, VALUE str)
2364
+ {
2365
+ rb_check_frozen(self);
2366
+
2367
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, false);
2368
+
2369
+ str = convert_encoding(str);
2370
+ if (!RSTRING_LEN(str)) {
2371
+ return self;
2372
+ }
2373
+
2374
+ size_t offset = parser->state.cursor - parser->state.start;
2375
+ const size_t remaining = parser->state.end - parser->state.cursor;
2376
+
2377
+ if (!remaining) {
2378
+ if (parser->buffer) {
2379
+ json_str_clear(parser->buffer);
2380
+ }
2381
+ parser->buffer = RB_OBJ_FROZEN_RAW(str) ? str : rb_obj_hide(rb_str_new_shared(str));
2382
+ offset = 0;
2383
+ } else {
2384
+ JSON_ASSERT(parser->buffer);
2385
+
2386
+ const size_t size = parser->state.end - parser->state.start;
2387
+ const size_t consumed = size - remaining;
2388
+
2389
+ if (RB_OBJ_FROZEN_RAW(parser->buffer)) {
2390
+ VALUE new_buffer = rb_obj_hide(rb_str_buf_new(remaining + RSTRING_LEN(str)));
2391
+ rb_enc_associate_index(new_buffer, utf8_encindex);
2392
+
2393
+ char *old_ptr = RSTRING_PTR(parser->buffer);
2394
+ memcpy(RSTRING_PTR(new_buffer), old_ptr + consumed, remaining);
2395
+ rb_str_set_len(new_buffer, remaining);
2396
+ offset = 0;
2397
+ parser->buffer = new_buffer;
2398
+ } else if (consumed > (size / 2) && size >= 512) {
2399
+ rb_str_modify(parser->buffer);
2400
+ char *old_ptr = RSTRING_PTR(parser->buffer);
2401
+ memmove(old_ptr, old_ptr + consumed, remaining);
2402
+ rb_str_set_len(parser->buffer, remaining);
2403
+ offset = 0;
2404
+ }
2405
+ rb_str_append(parser->buffer, str);
2406
+ }
2407
+
2408
+ long len;
2409
+ const char *start;
2410
+ RSTRING_GETMEM(parser->buffer, start, len);
2411
+ parser->state.start = start;
2412
+ parser->state.end = start + len;
2413
+ parser->state.cursor = parser->state.start + offset;
2414
+
2415
+ return self;
2416
+ }
2417
+
2418
+ struct json_parse_any_args {
2419
+ JSON_ParserState *state;
2420
+ JSON_ParserConfig *config;
2421
+ VALUE parser;
2422
+ };
2423
+
2424
+ static VALUE json_parse_any_resumable_safe0(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, _args))
2425
+ {
2426
+ struct json_parse_any_args *args = (struct json_parse_any_args *)_args;
2427
+ return (VALUE)json_parse_any(args->state, args->config, true);
2428
+ }
2429
+
2430
+ static VALUE json_parse_any_resumable_safe(VALUE _args)
2431
+ {
2432
+ struct json_parse_any_args *args = (struct json_parse_any_args *)_args;
2433
+ VALUE result = rb_catch_obj(args->parser, json_parse_any_resumable_safe0, _args);
2434
+ return result == args->parser ? Qfalse : result;
2435
+ }
2436
+
2437
+ static JSON_ResumableParser *ResumableParser_acquire(VALUE self, bool lock)
2438
+ {
2439
+ JSON_ResumableParser *parser = cResumableParser_get(self);
2440
+
2441
+ if (parser->in_use) {
2442
+ rb_raise(rb_eArgError, "ResumableParser can't be used recursively");
2443
+ }
2444
+
2445
+ if (lock) {
2446
+ parser->in_use = true;
2447
+ }
2448
+
2449
+ // self may have moved, so we need to update all pointers
2450
+ // Investigate: We might be better off keeping JSON_ParserState on the stack
2451
+ // and only persist what we need.
2452
+ parser->state.value_stack = &parser->value_stack;
2453
+ parser->state.frames = &parser->frames;
2454
+
2455
+ return parser;
2456
+ }
2457
+
2458
+ /*
2459
+ * call-seq: parse -> true or false
2460
+ *
2461
+ * Attemps to parse a JSON document from the internal buffer.
2462
+ * Returns whether a complete document could be parsed.
2463
+ *
2464
+ * It does raise +JSON::ParserError+ when encountering invalid \JSON syntax.
2465
+ *
2466
+ * The parsed object can be retrieved by calling #value
2467
+ */
2468
+ static VALUE cResumableParser_parse(VALUE self)
2469
+ {
2470
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, true);
2471
+
2472
+ if (parser->complete) {
2473
+ parser->parsed_bytes = 0;
2474
+ parser->incomplete_bytes = 0;
2475
+ parser->complete = false;
2476
+ }
2477
+
2478
+ if (!parser->buffer) {
2479
+ parser->in_use = false;
2480
+ return Qfalse;
2481
+ }
2482
+
2483
+ if (parser->frames.head == 0) {
2484
+ json_frame_stack_push(&parser->state, (json_frame){
2485
+ .type = JSON_FRAME_ROOT,
2486
+ .phase = JSON_PHASE_VALUE,
2487
+ });
2488
+ }
2489
+
2490
+ VALUE Vsource = parser->buffer; // Prevent compaction
2491
+
2492
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
2493
+
2494
+ if (frame->phase == JSON_PHASE_DONE) {
2495
+ JSON_ASSERT(parser->value_stack.head == 1);
2496
+ JSON_ASSERT(parser->frames.head == 1);
2497
+
2498
+ frame->phase = JSON_PHASE_VALUE;
2499
+ rvalue_stack_pop(parser->state.value_stack, 1);
2500
+ }
2501
+
2502
+ struct json_parse_any_args args = {
2503
+ .state = &parser->state,
2504
+ .config = &parser->config,
2505
+ .parser = self,
2506
+ };
2507
+ int status;
2508
+ const char *initial_cursor = parser->state.cursor;
2509
+ parser->complete = rb_protect(json_parse_any_resumable_safe, (VALUE)&args, &status);
2510
+
2511
+ if (status) {
2512
+ parser->complete = true; // a parse error is considered complete
2513
+ }
2514
+
2515
+ parser->parsed_bytes += parser->state.cursor - initial_cursor;
2516
+ parser->incomplete_bytes = parser->complete ? 0 : parser->state.end - parser->state.cursor;
2517
+
2518
+ json_eat_whitespace(&parser->state, &parser->config, false);
2519
+ if (eos(&parser->state)) {
2520
+ json_str_clear(parser->buffer);
2521
+ parser->buffer = Qfalse;
2522
+ }
2523
+ parser->in_use = false;
2524
+
2525
+ if (status) {
2526
+ rb_jump_tag(status); // reraise
2527
+ }
2528
+ RB_GC_GUARD(Vsource);
2529
+ return parser->complete ? Qtrue : Qfalse;
2530
+ }
2531
+
2532
+ /*
2533
+ * call-seq: value? -> true or false
2534
+ *
2535
+ * Returns whether a parsed value is available.
2536
+ */
2537
+ static VALUE cResumableParser_value_p(VALUE self)
2538
+ {
2539
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, false);
2540
+
2541
+ if (parser->value_stack.head > 0) {
2542
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
2543
+ if (frame->phase == JSON_PHASE_DONE) {
2544
+ return Qtrue;
2545
+ }
2546
+ }
2547
+ return Qfalse;
2548
+ }
2549
+
2550
+ /*
2551
+ * call-seq: value -> object
2552
+ *
2553
+ * Returns and consume the last parsed value.
2554
+ * Raises ArgumentError if there is no parsed value or if it was already retrieved:
2555
+ * parser << '[1][2]'
2556
+ * parser.value # ArgumentError no ready value
2557
+ * parser.parse # => true
2558
+ * parser.value # => [1]
2559
+ * parser.value # ArgumentError no ready value
2560
+ */
2561
+ static VALUE cResumableParser_value(VALUE self)
2562
+ {
2563
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, false);
2564
+
2565
+ if (parser->frames.head > 0) {
2566
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
2567
+
2568
+ if (frame->phase == JSON_PHASE_DONE) {
2569
+ VALUE result = *rvalue_stack_peek(parser->state.value_stack, 1);
2570
+ rvalue_stack_pop(parser->state.value_stack, 1);
2571
+ json_frame_stack_pop(parser->state.frames);
2572
+ return result;
2573
+ }
2574
+ }
2575
+ rb_raise(rb_eArgError, "no ready value");
2576
+ }
2577
+
2578
+ /*
2579
+ * call-seq: clear -> self
2580
+ *
2581
+ * Entirely reset the parser state and buffer.
2582
+ */
2583
+ static VALUE cResumableParser_clear(VALUE self)
2584
+ {
2585
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, false);
2586
+ parser->buffer = 0;
2587
+ parser->complete = true;
2588
+ parser->parsed_bytes = 0;
2589
+ parser->incomplete_bytes = 0;
2590
+ parser->frames.head = 0;
2591
+ parser->value_stack.head = 0;
2592
+ parser->state.name_cache.length = 0;
2593
+ parser->state.current_nesting = 0;
2594
+ parser->state.in_array = 1;
2595
+ parser->state.emitted_deprecations = 0;
2596
+ parser->state.start = parser->state.cursor = parser->state.end = NULL;
2597
+ return self;
2598
+ }
2599
+
2600
+ static VALUE cResumableParser_partial_value_body(VALUE self)
2601
+ {
2602
+ JSON_ResumableParser *original_parser = cResumableParser_get(self);
2603
+ JSON_ResumableParser parser = *original_parser;
2604
+
2605
+ parser.state.frames = &parser.frames;
2606
+ parser.state.value_stack = &parser.value_stack;
2607
+
2608
+ if (parser.value_stack.head == 0) {
2609
+ return Qnil;
2610
+ }
2611
+
2612
+ json_frame *frame = json_frame_stack_peek(parser.state.frames);
2613
+ long missing_object_value = 0;
2614
+ if (frame->type == JSON_FRAME_OBJECT && (frame->phase == JSON_PHASE_VALUE || frame->phase == JSON_PHASE_OBJECT_COLON)) {
2615
+ missing_object_value = 1;
2616
+ }
2617
+
2618
+ // Copy the value stack as we need to mutate it.
2619
+ long capa = parser.value_stack.head;
2620
+ parser.value_stack.capa = (capa + missing_object_value);
2621
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
2622
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
2623
+ parser.value_stack.ptr = value_stack_buffer;
2624
+
2625
+ JSON_ParserState *state = &parser.state;
2626
+ JSON_ParserConfig *config = &parser.config;
2627
+
2628
+ if (missing_object_value) {
2629
+ rvalue_stack_push(state->value_stack, Qnil, NULL, &state->value_stack);
2630
+ }
2631
+
2632
+ VALUE partial_result = Qundef;
2633
+
2634
+ while (UNDEF_P(partial_result)) {
2635
+ frame = json_frame_stack_peek(state->frames);
2636
+
2637
+ switch (frame->type) {
2638
+ case JSON_FRAME_ROOT: {
2639
+ partial_result = *rvalue_stack_peek(state->value_stack, 1);
2640
+ break;
2641
+ }
2642
+
2643
+ case JSON_FRAME_ARRAY: {
2644
+ long count = json_frame_entry_count(frame, state->value_stack);
2645
+ json_push_value(state, config, json_decode_array(state, config, count));
2646
+ json_frame_stack_pop(state->frames);
2647
+
2648
+ break;
2649
+ }
2650
+
2651
+ case JSON_FRAME_OBJECT: {
2652
+ long count = json_frame_entry_count(frame, state->value_stack);
2653
+ json_push_value(state, config, json_decode_object(state, config, count));
2654
+ json_frame_stack_pop(state->frames);
2655
+ break;
2656
+ }
2657
+
2658
+ default: {
2659
+ JSON_UNREACHABLE_RETURN(Qundef);
2660
+ break;
2661
+ }
2662
+ }
2663
+ }
2664
+
2665
+ ALLOCV_END(tmpbuf);
2666
+ return partial_result;
2667
+ }
2668
+
2669
+ /*
2670
+ * call-seq: partial_value -> object
2671
+ *
2672
+ * Returns the Ruby objects parsed up to this point:
2673
+ * parser << '[1, [2, 3,'
2674
+ * parser.parse # => false
2675
+ * parser.value # ArgumentError no ready value
2676
+ * parser.partial_value # => [1, [2, 3]]
2677
+ */
2678
+ static VALUE cResumableParser_partial_value(VALUE self)
2679
+ {
2680
+ JSON_ResumableParser *parser = ResumableParser_acquire(self, true);
2681
+
2682
+ int status;
2683
+ VALUE result = rb_protect(cResumableParser_partial_value_body, self, &status);
2684
+ parser->in_use = false;
2685
+ if (status) {
2686
+ rb_jump_tag(status);
2687
+ }
2688
+ return result;
2689
+ }
2690
+
2691
+ /*
2692
+ * call-seq: rest -> string
2693
+ *
2694
+ * Returns a string containing what remains to be parsed in the buffer
2695
+ * parser << '{ "message": "unterminated message'
2696
+ * parser.parse # => false
2697
+ * parser.rest # => '"unterminated message"'
2698
+ */
2699
+ static VALUE cResumableParser_rest(VALUE self)
2700
+ {
2701
+ JSON_ResumableParser *parser = cResumableParser_get(self);
2702
+
2703
+ if (!parser->buffer) {
2704
+ return rb_utf8_str_new("", 0);
2705
+ }
2706
+
2707
+ size_t offset = parser->state.cursor - parser->state.start;
2708
+ const char *ptr;
2709
+ long len;
2710
+ RSTRING_GETMEM(parser->buffer, ptr, len);
2711
+ return rb_utf8_str_new(ptr + offset, len - offset);
2712
+ }
2713
+
2714
+ /*
2715
+ * call-seq: value? -> true or false
2716
+ *
2717
+ * Returns whether the internal buffer has been entirely consumed.
2718
+ */
2719
+ static VALUE cResumableParser_eos_p(VALUE self)
2720
+ {
2721
+ JSON_ResumableParser *parser = cResumableParser_get(self);
2722
+ return eos(&parser->state) ? Qtrue : Qfalse;
2723
+ }
2724
+
2725
+ /*
2726
+ * call-seq: parsed_bytes -> integer
2727
+ *
2728
+ * Returns the number of bytes parsed since the start of the current partial value.
2729
+ * This is intended to be used for securing against untrusted input:
2730
+ *
2731
+ * loop do
2732
+ * if parser.parsed_bytes > DOCUMENT_MAX_SIZE
2733
+ * raise "document too large"
2734
+ * end
2735
+ *
2736
+ * parser << read_chunk
2737
+ * while parser.parse
2738
+ * process(parser.value)
2739
+ * end
2740
+ * end
2741
+ */
2742
+ static VALUE cResumableParser_parsed_bytes(VALUE self)
2743
+ {
2744
+ JSON_ResumableParser *parser = cResumableParser_get(self);
2745
+ return ULL2NUM(parser->parsed_bytes + parser->incomplete_bytes);
2746
+ }
2747
+
2748
+ void Init_parser(void)
2749
+ {
2750
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
2751
+ rb_ext_ractor_safe(true);
2752
+ #endif
2753
+
2754
+ #undef rb_intern
2755
+ rb_require("json/common");
2756
+ mJSON = rb_define_module("JSON");
2757
+ VALUE mExt = rb_define_module_under(mJSON, "Ext");
2758
+ VALUE cParserConfig = rb_define_class_under(mExt, "ParserConfig", rb_cObject);
2759
+
2760
+ rb_global_variable(&eParserError);
2761
+ eParserError = rb_path2class("JSON::ParserError");
2762
+
2763
+ rb_global_variable(&eNestingError);
2764
+ eNestingError = rb_path2class("JSON::NestingError");
2765
+
2766
+ rb_define_alloc_func(cParserConfig, cJSON_parser_s_allocate);
2767
+ rb_define_private_method(cParserConfig, "initialize", cParserConfig_initialize, 1);
2768
+ rb_define_method(cParserConfig, "parse", cParserConfig_parse, 1);
2769
+
2770
+ VALUE cParser = rb_define_class_under(mExt, "Parser", rb_cObject);
2771
+ rb_define_singleton_method(cParser, "parse", cParser_m_parse, 2);
2772
+
2773
+ VALUE cResumableParser = rb_define_class_under(mJSON, "ResumableParser", rb_cObject);
2774
+ rb_define_alloc_func(cResumableParser, cResumableParser_allocate);
2775
+ rb_define_private_method(cResumableParser, "initialize", cResumableParser_initialize, -1);
2776
+ rb_define_method(cResumableParser, "<<", cResumableParser_feed, 1);
2777
+ rb_define_method(cResumableParser, "parse", cResumableParser_parse, 0);
2778
+ rb_define_method(cResumableParser, "value", cResumableParser_value, 0);
2779
+ rb_define_method(cResumableParser, "value?", cResumableParser_value_p, 0);
2780
+ rb_define_method(cResumableParser, "partial_value", cResumableParser_partial_value, 0);
2781
+ rb_define_method(cResumableParser, "clear", cResumableParser_clear, 0);
2782
+ rb_define_method(cResumableParser, "rest", cResumableParser_rest, 0);
2783
+ rb_define_method(cResumableParser, "eos?", cResumableParser_eos_p, 0);
2784
+ rb_define_method(cResumableParser, "parsed_bytes", cResumableParser_parsed_bytes, 0);
2785
+
2786
+ rb_global_variable(&CNaN);
2787
+ CNaN = rb_const_get(mJSON, rb_intern("NaN"));
2788
+
2789
+ rb_global_variable(&CInfinity);
2790
+ CInfinity = rb_const_get(mJSON, rb_intern("Infinity"));
2791
+
2792
+ rb_global_variable(&CMinusInfinity);
2793
+ CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity"));
2794
+
2795
+ rb_global_variable(&Encoding_UTF_8);
2796
+ Encoding_UTF_8 = rb_const_get(rb_path2class("Encoding"), rb_intern("UTF_8"));
2797
+
2798
+ rb_global_variable(&JSON_empty_string);
2799
+ JSON_empty_string = rb_obj_hide(rb_utf8_str_new("", 0));
2800
+
2801
+ sym_max_nesting = ID2SYM(rb_intern("max_nesting"));
2802
+ sym_allow_nan = ID2SYM(rb_intern("allow_nan"));
2803
+ sym_allow_trailing_comma = ID2SYM(rb_intern("allow_trailing_comma"));
2804
+ sym_allow_comments = ID2SYM(rb_intern("allow_comments"));
2805
+ sym_allow_control_characters = ID2SYM(rb_intern("allow_control_characters"));
2806
+ sym_allow_invalid_escape = ID2SYM(rb_intern("allow_invalid_escape"));
2807
+ sym_symbolize_names = ID2SYM(rb_intern("symbolize_names"));
2808
+ sym_freeze = ID2SYM(rb_intern("freeze"));
2809
+ sym_on_load = ID2SYM(rb_intern("on_load"));
2810
+ sym_decimal_class = ID2SYM(rb_intern("decimal_class"));
2811
+ sym_allow_duplicate_key = ID2SYM(rb_intern("allow_duplicate_key"));
2812
+
2813
+ i_new = rb_intern("new");
2814
+ i_try_convert = rb_intern("try_convert");
2815
+ i_uminus = rb_intern("-@");
2816
+ i_encode = rb_intern("encode");
2817
+ i_at_line = rb_intern("@line");
2818
+ i_at_column = rb_intern("@column");
2819
+
2820
+ binary_encindex = rb_ascii8bit_encindex();
2821
+ utf8_encindex = rb_utf8_encindex();
2822
+ enc_utf8 = rb_utf8_encoding();
2823
+
2824
+ #ifdef HAVE_SIMD
2825
+ simd_impl = find_simd_implementation();
2826
+ #endif
2827
+ }