yard-yaml 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/certs/pboling.pem ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
3
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
4
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
5
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
6
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
7
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
8
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
9
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
10
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
11
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
12
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
13
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
14
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
15
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
16
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
17
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
18
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
19
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
20
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
21
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
22
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
23
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
24
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
25
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
26
+ L9nRqA==
27
+ -----END CERTIFICATE-----
@@ -12,10 +12,15 @@ module Yard
12
12
  #
13
13
  # Note: We intentionally keep the contract minimal and stable. Tests stub the backend.
14
14
  class Converter
15
+ BACKEND_STATE = {backend: nil}
16
+ BACKEND_MUTEX = Mutex.new
17
+
15
18
  class << self
16
19
  # Assignable backend for dependency injection in tests.
17
20
  # Expected to respond to `convert(yaml, options)` and return a Hash with :html, :title, :description, and :meta keys
18
- attr_writer :backend
21
+ def backend=(backend)
22
+ BACKEND_MUTEX.synchronize { BACKEND_STATE[:backend] = backend }
23
+ end
19
24
 
20
25
  # Convert a YAML string into an HTML result.
21
26
  #
@@ -34,37 +39,70 @@ module Yard
34
39
  # @param config [Yard::Yaml::Config]
35
40
  # @return [Hash]
36
41
  def from_file(path, options = {}, config: Yard::Yaml.config)
37
- content = read_file(path)
42
+ content = read_file(path, config: config)
38
43
  return empty_result if content.nil?
39
44
  run_convert(content, options.merge(source_path: path.to_s), config)
40
45
  end
41
46
 
42
47
  # Backend accessor with auto-discovery.
43
48
  def backend
44
- return @backend if defined?(@backend) && @backend
49
+ configured_backend = BACKEND_MUTEX.synchronize { BACKEND_STATE[:backend] }
50
+ return configured_backend if configured_backend
51
+
45
52
  begin
46
53
  require "yaml/converter"
47
54
  rescue LoadError
48
55
  # ignore; backend may be set by tests
49
56
  end
50
- @backend = if defined?(::Yaml) && ::Yaml.const_defined?(:Converter)
51
- ::Yaml::Converter
57
+
58
+ BACKEND_MUTEX.synchronize do
59
+ BACKEND_STATE[:backend] ||= ::Yaml::Converter if defined?(::Yaml) && ::Yaml.const_defined?(:Converter)
52
60
  end
53
61
  end
54
62
 
55
63
  private
56
64
 
57
- def read_file(path)
58
- File.read(path.to_s)
65
+ def read_file(path, config: Yard::Yaml.config)
66
+ raw = File.binread(path.to_s)
67
+ if binary_content?(raw)
68
+ handle_error(Yard::Yaml::Error.new("binary file not supported"), strict: config.strict, context: path.to_s)
69
+ return
70
+ end
71
+
72
+ content = raw.dup.force_encoding(Encoding::UTF_8)
73
+ return content if content.valid_encoding?
74
+
75
+ if config.strict
76
+ handle_error(Yard::Yaml::Error.new("invalid UTF-8 bytes in file"), strict: true, context: path.to_s)
77
+ return
78
+ end
79
+
80
+ handle_error(
81
+ Yard::Yaml::Error.new("invalid UTF-8 bytes in file; replaced invalid sequences"),
82
+ strict: false,
83
+ context: path.to_s,
84
+ )
85
+ content.scrub
59
86
  rescue Errno::ENOENT => e
60
- handle_error(e, strict: Yard::Yaml.config.strict, context: "missing file: #{path}")
87
+ handle_error(e, strict: config.strict, context: "missing file: #{path}")
61
88
  nil
62
89
  end
63
90
 
91
+ def binary_content?(raw)
92
+ sample = raw.byteslice(0, 4096) || "".b
93
+ return true if sample.include?("\x00")
94
+ return false if sample.empty?
95
+
96
+ control_bytes = sample.bytes.count do |byte|
97
+ (0..8).cover?(byte) || byte == 11 || byte == 12 || (14..31).cover?(byte)
98
+ end
99
+ control_bytes.fdiv(sample.bytesize) > 0.1
100
+ end
101
+
64
102
  def run_convert(yaml, options, config)
65
103
  opts = build_options(options, config)
66
104
  b = backend
67
- unless b && b.respond_to?(:convert)
105
+ unless b&.respond_to?(:convert)
68
106
  handle_error(Yard::Yaml::Error.new("yaml-converter backend not available"), strict: config.strict, context: "backend")
69
107
  return empty_result
70
108
  end
@@ -4,7 +4,8 @@ module Yard
4
4
  module Yaml
5
5
  # Plugin activation for yard-yaml (Phase 3: config + discovery; still no YARD registrations).
6
6
  module Plugin
7
- @activated = false
7
+ STATE = {activated: false}
8
+ STATE_MUTEX = Mutex.new
8
9
 
9
10
  class << self
10
11
  # Whether the plugin has been activated for the current process.
@@ -12,7 +13,7 @@ module Yard
12
13
  #
13
14
  # @return [Boolean]
14
15
  def activated?
15
- @activated
16
+ STATE[:activated]
16
17
  end
17
18
 
18
19
  # Activate the plugin.
@@ -44,14 +45,14 @@ module Yard
44
45
  # Non-strict errors are already warned by converter/discovery
45
46
  end
46
47
 
47
- @activated = true
48
+ STATE_MUTEX.synchronize { STATE[:activated] = true }
48
49
  nil
49
50
  end
50
51
 
51
52
  # Test-helper: reset internal activation flag.
52
53
  # Not part of public API; used from test teardown to avoid state leakage.
53
54
  def __reset_state__
54
- @activated = false
55
+ STATE_MUTEX.synchronize { STATE[:activated] = false }
55
56
  nil
56
57
  end
57
58
  end
@@ -19,7 +19,7 @@ module Yard
19
19
  # @param config [Yard::Yaml::Config]
20
20
  # @return [String] HTML fragment (may be empty string)
21
21
  def render_for(object, base_dir: Dir.pwd, config: Yard::Yaml.config)
22
- return "" unless object && object.respond_to?(:tags)
22
+ return "" unless object&.respond_to?(:tags)
23
23
 
24
24
  parts = []
25
25
 
@@ -24,14 +24,10 @@ module Yard
24
24
  end
25
25
  else
26
26
  # Create a minimal shim that records define_tag calls
27
+ calls = []
27
28
  lib = Module.new
28
- class << lib
29
- attr_accessor :calls
30
- def define_tag(*args)
31
- self.calls ||= []
32
- self.calls << args
33
- end
34
- end
29
+ lib.define_singleton_method(:calls) { calls }
30
+ lib.define_singleton_method(:define_tag) { |*args| calls << args }
35
31
  begin
36
32
  ::YARD::Tags.const_set(:Library, lib)
37
33
  rescue StandardError
@@ -3,8 +3,8 @@
3
3
  module Yard
4
4
  module Yaml
5
5
  module Version
6
- VERSION = "0.1.0"
6
+ VERSION = "0.1.1"
7
7
  end
8
- VERSION = Version::VERSION # Support the traditional VERSION constant.
8
+ VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
10
10
  end
data/lib/yard/yaml.rb CHANGED
@@ -1,6 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "version_gem"
3
4
  require_relative "yaml/version"
5
+
6
+ Yard::Yaml::Version.class_eval do
7
+ extend VersionGem::Basic
8
+ end
4
9
  require_relative "yaml/config"
5
10
  require_relative "yaml/cli"
6
11
  require_relative "yaml/plugin"
@@ -17,8 +22,11 @@ module Yard
17
22
  # Generic error for yard-yaml
18
23
  class Error < StandardError; end
19
24
 
20
- @config = nil
21
- @pages = nil
25
+ STATE = {
26
+ config: nil,
27
+ pages: nil,
28
+ }
29
+ STATE_MUTEX = Mutex.new
22
30
 
23
31
  class << self
24
32
  # Access the global configuration for yard-yaml.
@@ -28,19 +36,21 @@ module Yard
28
36
  #
29
37
  # @return [Yard::Yaml::Config]
30
38
  def config
31
- @config ||= Config.new
39
+ STATE[:config] || STATE_MUTEX.synchronize { STATE[:config] ||= Config.new }
32
40
  end
33
41
 
34
42
  # Access collected pages (Phase 3). Nil until plugin activation performs discovery.
35
43
  # Each page is a Hash with keys: :path, :html, :title, :description, :meta
36
44
  # @return [Array<Hash>, nil]
37
- attr_reader :pages
45
+ def pages
46
+ STATE[:pages]
47
+ end
38
48
 
39
49
  # Internal: set collected pages (used by Plugin during activation)
40
50
  def __set_pages__(list)
41
- @pages = Array(list)
42
- mirror_pages_to_registry(@pages)
43
- @pages
51
+ pages = STATE_MUTEX.synchronize { STATE[:pages] = Array(list) }
52
+ mirror_pages_to_registry(pages)
53
+ pages
44
54
  end
45
55
 
46
56
  # Configure the plugin programmatically.
@@ -80,8 +90,10 @@ module Yard
80
90
 
81
91
  # Test-helper: reset memoized config to defaults (not public API)
82
92
  def __reset_state__
83
- @config = nil
84
- @pages = nil
93
+ STATE_MUTEX.synchronize do
94
+ STATE[:config] = nil
95
+ STATE[:pages] = nil
96
+ end
85
97
  if defined?(::Yard::Yaml::Plugin) && ::Yard::Yaml::Plugin.respond_to?(:__reset_state__)
86
98
  ::Yard::Yaml::Plugin.__reset_state__
87
99
  end
@@ -0,0 +1,9 @@
1
+ module Yard
2
+ module Yaml
3
+ module Version
4
+ VERSION: String
5
+ end
6
+ VERSION: String
7
+ end
8
+ end
9
+
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
- - Aboling0
7
+ - Annibelle Boling
8
8
  - Peter H. Boling
9
9
  bindir: exe
10
10
  cert_chain:
@@ -39,67 +39,67 @@ cert_chain:
39
39
  date: 1980-01-02 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
- name: yaml-converter
42
+ name: version_gem
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.1'
47
+ version: '1.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.1.9
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
- version: '0.1'
57
+ version: '1.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.9
55
61
  - !ruby/object:Gem::Dependency
56
- name: version_gem
62
+ name: yaml-converter
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '1.1'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 1.1.9
67
+ version: '0.1'
65
68
  type: :runtime
66
69
  prerelease: false
67
70
  version_requirements: !ruby/object:Gem::Requirement
68
71
  requirements:
69
72
  - - "~>"
70
73
  - !ruby/object:Gem::Version
71
- version: '1.1'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.1.9
74
+ version: '0.1'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: kettle-dev
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '1.1'
81
+ version: '2.0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '1.1'
88
+ version: '2.0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: bundler-audit
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.9.2
95
+ version: 0.9.3
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 0.9.2
102
+ version: 0.9.3
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -141,6 +141,9 @@ dependencies:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
143
  version: '3.0'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 3.0.6
144
147
  type: :development
145
148
  prerelease: false
146
149
  version_requirements: !ruby/object:Gem::Requirement
@@ -148,26 +151,29 @@ dependencies:
148
151
  - - "~>"
149
152
  - !ruby/object:Gem::Version
150
153
  version: '3.0'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 3.0.6
151
157
  - !ruby/object:Gem::Dependency
152
158
  name: kettle-test
153
159
  requirement: !ruby/object:Gem::Requirement
154
160
  requirements:
155
161
  - - "~>"
156
162
  - !ruby/object:Gem::Version
157
- version: '1.0'
163
+ version: '2.0'
158
164
  - - ">="
159
165
  - !ruby/object:Gem::Version
160
- version: 1.0.6
166
+ version: 2.0.0
161
167
  type: :development
162
168
  prerelease: false
163
169
  version_requirements: !ruby/object:Gem::Requirement
164
170
  requirements:
165
171
  - - "~>"
166
172
  - !ruby/object:Gem::Version
167
- version: '1.0'
173
+ version: '2.0'
168
174
  - - ">="
169
175
  - !ruby/object:Gem::Version
170
- version: 1.0.6
176
+ version: 2.0.0
171
177
  - !ruby/object:Gem::Dependency
172
178
  name: ruby-progressbar
173
179
  requirement: !ruby/object:Gem::Requirement
@@ -191,7 +197,7 @@ dependencies:
191
197
  version: '1.0'
192
198
  - - ">="
193
199
  - !ruby/object:Gem::Version
194
- version: 1.0.2
200
+ version: 1.0.3
195
201
  type: :development
196
202
  prerelease: false
197
203
  version_requirements: !ruby/object:Gem::Requirement
@@ -201,7 +207,7 @@ dependencies:
201
207
  version: '1.0'
202
208
  - - ">="
203
209
  - !ruby/object:Gem::Version
204
- version: 1.0.2
210
+ version: 1.0.3
205
211
  - !ruby/object:Gem::Dependency
206
212
  name: gitmoji-regex
207
213
  requirement: !ruby/object:Gem::Requirement
@@ -222,7 +228,7 @@ dependencies:
222
228
  - - ">="
223
229
  - !ruby/object:Gem::Version
224
230
  version: 1.0.3
225
- description: "\U0001F968 A YARD plugin for YAML documents"
231
+ description: "\U0001F52E A YARD plugin for YAML documents"
226
232
  email:
227
233
  - floss@galtzo.com
228
234
  executables: []
@@ -233,9 +239,8 @@ extra_rdoc_files:
233
239
  - CODE_OF_CONDUCT.md
234
240
  - CONTRIBUTING.md
235
241
  - FUNDING.md
236
- - LICENSE.txt
242
+ - LICENSE.md
237
243
  - README.md
238
- - REEK
239
244
  - RUBOCOP.md
240
245
  - SECURITY.md
241
246
  files:
@@ -244,11 +249,11 @@ files:
244
249
  - CODE_OF_CONDUCT.md
245
250
  - CONTRIBUTING.md
246
251
  - FUNDING.md
247
- - LICENSE.txt
252
+ - LICENSE.md
248
253
  - README.md
249
- - REEK
250
254
  - RUBOCOP.md
251
255
  - SECURITY.md
256
+ - certs/pboling.pem
252
257
  - lib/yard-yaml.rb
253
258
  - lib/yard/yaml.rb
254
259
  - lib/yard/yaml/cli.rb
@@ -263,15 +268,16 @@ files:
263
268
  - lib/yard/yaml/templates.rb
264
269
  - lib/yard/yaml/version.rb
265
270
  - sig/yard/yaml.rbs
271
+ - sig/yard/yaml/version.rbs
266
272
  homepage: https://github.com/galtzo-floss/yard-yaml
267
273
  licenses:
268
274
  - MIT
269
275
  metadata:
270
- homepage_uri: https://yard-yaml.galtzo.com/
271
- source_code_uri: https://github.com/galtzo-floss/yard-yaml/tree/v0.1.0
272
- changelog_uri: https://github.com/galtzo-floss/yard-yaml/blob/v0.1.0/CHANGELOG.md
276
+ homepage_uri: https://structuredmerge.org
277
+ source_code_uri: https://github.com/galtzo-floss/yard-yaml/tree/v0.1.1
278
+ changelog_uri: https://github.com/galtzo-floss/yard-yaml/blob/v0.1.1/CHANGELOG.md
273
279
  bug_tracker_uri: https://github.com/galtzo-floss/yard-yaml/issues
274
- documentation_uri: https://www.rubydoc.info/gems/yard-yaml/0.1.0
280
+ documentation_uri: https://www.rubydoc.info/gems/yard-yaml/0.1.1
275
281
  funding_uri: https://github.com/sponsors/pboling
276
282
  wiki_uri: https://github.com/galtzo-floss/yard-yaml/wiki
277
283
  news_uri: https://www.railsbling.com/tags/yard-yaml
@@ -279,7 +285,7 @@ metadata:
279
285
  rubygems_mfa_required: 'true'
280
286
  rdoc_options:
281
287
  - "--title"
282
- - "yard-yaml - \U0001F968 A YARD plugin for YAML documents"
288
+ - "yard-yaml - \U0001F52E A YARD plugin for YAML documents"
283
289
  - "--main"
284
290
  - README.md
285
291
  - "--exclude"
@@ -300,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
306
  - !ruby/object:Gem::Version
301
307
  version: '0'
302
308
  requirements: []
303
- rubygems_version: 3.7.2
309
+ rubygems_version: 4.0.10
304
310
  specification_version: 4
305
- summary: "\U0001F968 A YARD plugin for YAML documents"
311
+ summary: "\U0001F52E A YARD plugin for YAML documents"
306
312
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2025 Annibelle Boling
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
data/REEK DELETED
File without changes