EXtremeZip 2022.2.4 → 2022.2.20

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18b15f99993a00ab85f9dc642d40bd43141eb4f59c357c14f11155476eeee56d
4
- data.tar.gz: 602d58ef6b385072c725263f96fc0dcdaa045c98c106d1c006f88b1bf285504a
3
+ metadata.gz: 4b684ef3eb29aacd0f18ae476b837af976b8bb054c4dd90dd07dcfe7873e833a
4
+ data.tar.gz: 4d0410d8d161d798e514694559f65595fa3ffcc78c90d937e33daa2decdbcd32
5
5
  SHA512:
6
- metadata.gz: c13853be7482d3e5a0592f5dc866dda963dc186823f087cf506fdd9556ee4ccb1b579f756d6e3ba39b6c595c7dff6b0baec6e9929824881fb2ce452e20440254
7
- data.tar.gz: 8935108d009d1884da3ba99e4fc20cefbd335c1cd8de818a1b93958726e5e9320f6e1762aec72442026f63149fdf90de3e603fb9d4d55b93ed51cfe3bc584a68
6
+ metadata.gz: a21e8e7e4428a2d1963507f93068c2a75f451d31d5bc684e30c3178f30bfcaf0ed59637f10cb998316849ee617988b04d7938c16b9a3596a1f9011277a401680
7
+ data.tar.gz: 1ec8b2c365b10c609d237b9092a1f63bfd8107b38ccbd76334e0a5f3b1ceb626c5d25dc73274b37291942da23e3aff2256aa5b17db56def39d718d91cd4d19c3
@@ -1,20 +1,47 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # require 'pathname'
4
- # require File.dirname(__FILE__)+'/filemessage.pb.rb'
5
3
  require 'victoriafresh'
6
4
  require 'cbor'
7
5
  require 'lzma'
8
6
  require 'get_process_mem'
9
7
 
10
8
  def checkMemoryUsage(lineNumber)
11
- mem = GetProcessMem.new
9
+ mem = GetProcessMem.new
12
10
 
13
- puts("#{lineNumber} , Memory: #{mem.mb}"); # Debug
11
+ puts("#{lineNumber} , Memory: #{mem.mb}"); # Debug
14
12
  end # def checkMemoryUsage
15
13
 
16
- # 根据版本号,提取VFS数据内容
17
- def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
14
+
15
+
16
+
17
+ class ExtremeUnZip
18
+ # 根据偏移值来读取压缩块数据列表。
19
+ def readVfsDataList(wholeCbor)
20
+ compressedVfsDataList = [] # 获取压缩后的数据块列表
21
+ startIndix=wholeCbor['vfsDataListStart'] # 初始起始位置。
22
+
23
+ puts "whole length: #{@wholeFileContent.length}, list conent: #{wholeCbor['vfsDataList']}" # Debug
24
+
25
+
26
+ wholeCbor['vfsDataList'].each do |currentBlockInfo| # 一个个块地处理
27
+ length=currentBlockInfo['length'] # 获取长度。
28
+
29
+ currentBlock=@wholeFileContent[startIndix, length] # 读取内容
30
+
31
+ puts "start index: #{startIndix}, length: #{length}, content length: #{currentBlock.length}" # Debug
32
+
33
+ compressedVfsDataList << currentBlock # 加入当前块
34
+
35
+ startIndix+=length # 位移。
36
+ end
37
+
38
+ compressedVfsDataList # 返回 内容
39
+ end
40
+
41
+ # 根据版本号,提取VFS数据内容
42
+
43
+
44
+ def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
18
45
  victoriaFreshData = '' # 解压后的数据块整体
19
46
  dataFileName = 'victoriafreshdata.w' # 数据文件名
20
47
  dataFile = {} # 数据文件对象
@@ -31,6 +58,10 @@ def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
31
58
  dataFile.close # 关闭文件
32
59
  elsif (fileVersion >= 30) # 30以上版本
33
60
  compressedVfsDataList = wholeCbor['vfsDataList'] # 获取压缩后的数据块列表
61
+
62
+ if (fileVersion>=251) # 251 以上版本。要按照偏移值来读取压缩数据块列表。
63
+ compressedVfsDataList=readVfsDataList(wholeCbor) # 根据偏移值来读取压缩块数据列表。
64
+ end # if (fileVersion>=251) # 251 以上版本
34
65
 
35
66
  puts("data block amont: #{compressedVfsDataList.length}") # Debug
36
67
 
@@ -44,18 +75,12 @@ def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
44
75
 
45
76
  begin # 解压
46
77
  currentRawData = LZMA.decompress(currentCompressed) # 解压这一块
47
-
48
78
 
49
79
  dataFile.syswrite(currentRawData) # 写入内容
50
80
  rescue RuntimeError => e # 解压失败
51
81
  puts "Warning: the exz file may be incomplete." # 报告错误。文件可能不完整。
52
82
  end # begin # 解压
53
83
 
54
- # victoriaFreshData=victoriaFreshData+currentRawData #追加
55
- # victoriaFreshData << currentRawData #追加
56
-
57
- #puts("byte size: #{victoriaFreshData.bytesize}") # debug.
58
-
59
84
  dataBlockCounter += 1 # count
60
85
  end # compressedVfsDataList.each do |currentCompressed|
61
86
 
@@ -65,88 +90,46 @@ def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
65
90
  dataFileName # 返回解压后的数据块整体
66
91
  end # def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
67
92
 
68
- def extractVfsDataWithVersion(wholeCbor, fileVersion) # 根据版本号,提取VFS数据内容
69
- victoriaFreshData = '' # 解压后的数据块整体
70
-
71
- if (fileVersion == 14) # 14版本
72
- compressedVfsData = wholeCbor['vfsData'] # 获取压缩后的数据内容
73
-
74
- victoriaFreshData = LZMA.decompress(compressedVfsData) # 解压缩数据内容
75
- elsif (fileVersion >= 30) # 30以上版本
76
- compressedVfsDataList = wholeCbor['vfsDataList'] # 获取压缩后的数据块列表
77
-
78
- puts("data block amont: #{compressedVfsDataList.length}") # Debug
79
-
80
- dataBlockCounter = 0 # Data block counter
81
-
82
- compressedVfsDataList.each do |currentCompressed| # 一块块地解压
83
- puts("data block counter: #{dataBlockCounter}") # Debug
84
- checkMemoryUsage(34)
85
-
86
- currentRawData = LZMA.decompress(currentCompressed) # 解压这一块
87
-
88
- # victoriaFreshData=victoriaFreshData+currentRawData #追加
89
- victoriaFreshData << currentRawData # 追加
90
-
91
- puts("byte size: #{victoriaFreshData.bytesize}") # debug.
92
-
93
- dataBlockCounter += 1 # count
94
- end # compressedVfsDataList.each do |currentCompressed|
95
- end # if (fileVersion==14) #14版本
96
-
97
- victoriaFreshData # 返回解压后的数据块整体
98
- end # extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
99
-
100
- class ExtremeUnZip
101
- # 解压
93
+ # 解压
102
94
  def exuz(rootPath)
103
- result = true # 解压结果
104
-
105
- wholeFileContent = File.read(rootPath) # 最终文件内容
95
+ result = true # 解压结果
106
96
 
107
- checkMemoryUsage(60)
97
+ currentBlockFile = File.new(rootPath, 'rb') # 打开文件
108
98
 
109
- puts wholeFileContent.class # debug
99
+ @wholeFileContent = currentBlockFile.read # 读取全部内容
110
100
 
111
- wholeCborByteArray = wholeFileContent[4..-1] # 从第5个到末尾
101
+ currentBlockFile.close # 关闭文件
112
102
 
113
- # puts wholeCborByteArray #Debug.
103
+ checkMemoryUsage(60)
114
104
 
115
- #/usr/local/share/gems/gems/EXtremeZip-2021.7.8/lib/extremeunzip.zzaqsu.rb:110:in `decode': end of buffer reached (EOFError)
105
+ wholeCborByteArray = @wholeFileContent[4..-1] # 从第5个到末尾
116
106
 
117
107
  begin # 可能出错。
118
- options = {:tolerant => true}
108
+ options = {:tolerant => true}
119
109
 
120
- wholeCbor = CBOR.decode(wholeCborByteArray, options) # 解码
110
+ wholeCbor = CBOR.decode(wholeCborByteArray, options) # 解码
121
111
 
122
- fileVersion = wholeCbor['version'] # 获取版本号
112
+ fileVersion = wholeCbor['version'] # 获取版本号
123
113
 
124
114
  if (fileVersion < 14) # 版本号过小
125
- checkMemoryUsage(85)
126
- puts 'file version too old' # 报告错误
115
+ checkMemoryUsage(85)
116
+ puts 'file version too old' # 报告错误
127
117
  else # 版本号够大
128
- compressedVfsMenu = wholeCbor['vfsMenu'] # 获取压缩后的目录内容
118
+ compressedVfsMenu = wholeCbor['vfsMenu'] # 获取压缩后的目录内容
129
119
 
130
- checkMemoryUsage(90)
131
- replyByteArray = LZMA.decompress(compressedVfsMenu) # 解码目录VFS字节数组内容
120
+ checkMemoryUsage(90)
121
+ replyByteArray = LZMA.decompress(compressedVfsMenu) # 解码目录VFS字节数组内容
132
122
 
133
- # puts replyByteArray #Debug
134
-
135
- checkMemoryUsage(95)
136
- # victoriaFreshData=extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
137
- victoriaFreshDataFile = extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) # 根据版本号,提取VFS数据内容
138
-
139
- # puts victoriaFreshData #Debug
140
-
141
- checkMemoryUsage(100)
142
- $clipDownloader = VictoriaFresh.new # 创建下载器。
143
-
144
- $clipDownloader.releaseFilesExternalDataFile(replyByteArray, victoriaFreshDataFile) # 释放各个文件
123
+ checkMemoryUsage(95)
124
+
125
+ victoriaFreshDataFile = extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) # 根据版本号,提取VFS数据内容
145
126
 
146
- fileToRemove = File.new(victoriaFreshDataFile) # 要删除的文件
127
+ checkMemoryUsage(100)
128
+ $clipDownloader = VictoriaFresh.new # 创建下载器。
147
129
 
148
- #File.delete(fileToRemove) # 删除文件
130
+ $clipDownloader.releaseFilesExternalDataFile(replyByteArray, victoriaFreshDataFile) # 释放各个文件
149
131
 
132
+ fileToRemove = File.new(victoriaFreshDataFile) # 要删除的文件
150
133
  end # if (fileVersion<14) #版本号过小
151
134
 
152
135
  result =true # 解压成功
@@ -8,6 +8,7 @@ require 'etc' # cpu amount
8
8
  require 'cod'
9
9
  require 'uuid'
10
10
  require 'get_process_mem'
11
+ require 'pathname'
11
12
 
12
13
  def checkMemoryUsage(lineNumber)
13
14
  mem = GetProcessMem.new
@@ -22,6 +23,7 @@ class ExtremeZip
22
23
  @filePartCounter = 0 # 文件分块计数器
23
24
  @responsePipeList = [] # 任务回复管道列表
24
25
  @processIdList = [] # 子进程编号列表。
26
+ @processTimestamp = Time.new.to_i # 记录进程启动的时间戳。
25
27
 
26
28
  @maxSubProcessAmount = Etc.nprocessors # 获取最大的子进程个数
27
29
 
@@ -57,64 +59,155 @@ class ExtremeZip
57
59
 
58
60
  @wholeCbor['vfsDataListStart']=198910 # 压缩 VFS 数据列表起始位置。
59
61
  end # addBasicFileInformation # 加入基本文件信息
62
+
63
+ def writeStamp(rootPath) # 更新时间戳文件
64
+ directoryPathName=Pathname.new(rootPath) #构造路径名字对象。
65
+ datastore= "#{directoryPathName.expand_path}/.exzstamp" # 配置文件路径
66
+ puts "writing stamp file: #{datastore}" # Debug
67
+
68
+ #stamp = wholeCbor['timestamp'] # 获取时间戳
69
+ stampCbor={} # 时间戳对象。
70
+ stampCbor['timestamp']= @processTimestamp # 设置时间戳。
71
+
72
+ compressed= stampCbor.to_cbor
73
+
74
+ extremeZipOutputFile = File.new(datastore, 'wb') # 创建文件
75
+ extremeZipOutputFile.syswrite(compressed) # 写入文件
76
+ extremeZipOutputFile.close # 关闭文件
77
+
78
+ end # writeStamp # 更新时间戳文件
79
+
80
+ def loadStamp(rootPath) # 读取时间戳阈值。
81
+ stamp=0 # 默认值。
82
+ fileExists=false # 文件是否存在
83
+
84
+ directoryPathName=Pathname.new(rootPath) #构造路径名字对象。
85
+
86
+ isFile=directoryPathName.file? #是否是文件。
87
+
88
+ unless isFile #是文件就跳过。
89
+ #陈欣
90
+
91
+ datastore= "#{directoryPathName.expand_path}/.exzstamp" # 配置文件路径
92
+ puts "reading stamp file: #{datastore}" # Debug
93
+
94
+ begin # 尝试读取。
95
+
96
+ #陈欣
97
+
98
+ currentBlockFile = File.new(datastore, 'rb') # 打开文件
99
+
100
+ fileExists=true # 文件存在
101
+
102
+ stampFileContent = currentBlockFile.read # 读取全部内容
103
+
104
+ currentBlockFile.close # 关闭文件
105
+
106
+ options = {:tolerant => true}
107
+
108
+ wholeCbor = CBOR.decode(stampFileContent, options) # 解码
109
+
110
+ puts wholeCbor # Debug
111
+ puts wholeCbor.inspect # Debug
112
+
113
+ stamp = wholeCbor['timestamp'] # 获取时间戳
114
+ #stamp = wholeCbor.try(:[], 'timestamp') # 获取时间戳
115
+ rescue Errno::ENOENT, TypeError
116
+
117
+ end
118
+
119
+
120
+ end #unless isFile #是文件就跳过。
121
+
122
+ return stamp, fileExists # 返回时间戳。
123
+ end #loadStamp(rootPath) # 读取时间戳阈值。
60
124
 
61
125
  # 压缩
62
126
  def exz(rootPath)
63
- victoriaFresh, = @clipDownloader.checkOnce(rootPath) # 打包该目录树。
127
+ timestampTHreshold, fileExists=loadStamp(rootPath) # 读取时间戳阈值。
128
+
129
+ #陈欣
130
+
131
+ if (timestampTHreshold > 0) # 有效的时间戳
132
+ @clipDownloader.timestampThreshold=timestampTHreshold # 设置文件时间戳阈值。
133
+ end #if (timestampTHreshold > 0) # 有效的时间戳
134
+
135
+ if fileExists # 存在文件,则表明将要发生增量压缩
136
+ @wholeCbor['incremental']=true # 是增量压缩。
137
+
138
+ end # if fileExists # 存在文件,则表明用户要求增量压缩
64
139
 
65
- @filePartAmount = @clipDownloader.currentDiskFlushSuffix # 获取文件个数
140
+ @wholeCbor['timestamp']=@processTimestamp # 记录进程启动的时间戳。
141
+
142
+ victoriaFresh, = @clipDownloader.checkOnce(rootPath) # 打包该目录树。
66
143
 
67
- compressVfsMenu(victoriaFresh) # 压缩目录数据。
144
+ @filePartAmount = @clipDownloader.currentDiskFlushSuffix # 获取文件个数
68
145
 
69
- addBasicFileInformation # 加入基本文件信息
146
+ compressVfsMenu(victoriaFresh) # 压缩目录数据。
70
147
 
71
- processIdList, responsePipeList = launchSubProcesses # 启动子进程。
148
+ addBasicFileInformation # 加入基本文件信息
72
149
 
73
- receiveCompressedVfsDataList(processIdList, responsePipeList) # 接收压缩后的数据块列表
150
+ processIdList, responsePipeList = launchSubProcesses # 启动子进程。
74
151
 
75
- checkMemoryUsage(155)
76
- @wholeCbor['vfsDataList'] = @vfsDataList # 加入数据
152
+ receiveCompressedVfsDataList(processIdList, responsePipeList) # 接收压缩后的数据块列表
77
153
 
78
- wholeFileContent = 'exz' + "\0" + @wholeCbor.to_cbor # 追加CBOR字节数组
154
+ checkMemoryUsage(155)
155
+ @wholeCbor['vfsDataList'] = @vfsDataList # 加入数据
156
+
157
+ wholeFileContent = 'exz' + "\0" + @wholeCbor.to_cbor # 追加CBOR字节数组
79
158
 
80
- vfsDataListStart=wholeFileContent.length # 按照现在的序列化情况,计算出来的起始位置。
159
+ vfsDataListStart=wholeFileContent.length # 按照现在的序列化情况,计算出来的起始位置。
81
160
 
82
- while (vfsDataListStart!=@wholeCbor['vfsDataListStart']) # 计算出的偏移不一致
83
- @wholeCbor['vfsDataListStart']=vfsDataListStart # 使用新的值
84
- wholeFileContent = 'exz' + "\0" + @wholeCbor.to_cbor # 追加CBOR字节数组
85
- vfsDataListStart=wholeFileContent.length # 按照现在的序列化情况,计算出来的起始位置。
86
- end
161
+ while (vfsDataListStart!=@wholeCbor['vfsDataListStart']) # 计算出的偏移不一致
162
+ @wholeCbor['vfsDataListStart']=vfsDataListStart # 使用新的值
163
+ wholeFileContent = 'exz' + "\0" + @wholeCbor.to_cbor # 追加CBOR字节数组
164
+ vfsDataListStart=wholeFileContent.length # 按照现在的序列化情况,计算出来的起始位置。
165
+ end
87
166
 
88
- # 写入文件:
89
- writeFile(wholeFileContent, victoriaFresh) # 写入文件内容
167
+ # 写入文件:
168
+ writeFile(wholeFileContent, victoriaFresh) # 写入文件内容
90
169
 
91
- appendVfsDataList # 追加压缩块列表数据。
170
+ appendVfsDataList victoriaFresh # 追加压缩块列表数据。
171
+
172
+ if fileExists # 存在文件,则表明将要发生增量压缩
173
+ writeStamp (rootPath) # 更新时间戳文件
174
+ end # if fileExists # 存在文件,则表明用户要求增量压缩
175
+
92
176
  end # def exz(rootPath)
93
177
 
94
178
  # 写入压缩块文件
95
179
  def writeCompressBlock(compressed, processCounter)
96
- extremeZipOutputFile = File.new("comressed.#{processCounter}.cex", 'wb') # 创建文件
97
- extremeZipOutputFile.syswrite(compressed) # 写入文件
98
- extremeZipOutputFile.close # 关闭文件
180
+ extremeZipOutputFile = File.new("comressed.#{processCounter}.cex", 'wb') # 创建文件
181
+ extremeZipOutputFile.syswrite(compressed) # 写入文件
182
+ extremeZipOutputFile.close # 关闭文件
99
183
  end
100
184
 
101
185
  # 追加压缩块列表数据。
102
- def appendVfsDataList
103
- extremeZipOutputFile = File.new("#{victoriaFresh['name']}.exz", 'ab') # 打开文件
186
+ def appendVfsDataList (victoriaFresh)
187
+ extremeZipOutputFile = File.new("#{victoriaFresh['name']}.exz", 'ab') # 打开文件
104
188
 
105
- processCounter=0 # 块计数器。
189
+ processCounter=0 # 块计数器。
106
190
 
107
- @wholeCbor['vfsDataList'].each do
191
+ @wholeCbor['vfsDataList'].each do
108
192
  #extremeZipOutputFile = File.new("comressed.#{processCounter}.cex", 'wb') # 创建文件
109
193
 
110
- wholeFileContent=File.read("comressed.#{processCounter}.cex") # 读取压缩块。
194
+ currentBlockFile = File.new("comressed.#{processCounter}.cex", 'rb') # 打开文件
195
+
196
+ wholeFileContent = currentBlockFile.read # 读取全部内容
197
+
198
+ currentBlockFile.close # 关闭文件
199
+ File.delete(currentBlockFile) # 删除数据块文件
200
+
201
+ #wholeFileContent=File.read("comressed.#{processCounter}.cex", 'rb') # 读取压缩块。
111
202
 
112
- extremeZipOutputFile.syswrite(wholeFileContent) # 写入文件
203
+ puts "wirte file contetn length: #{wholeFileContent.length}" # Debghu
113
204
 
114
- processCounter += 1 # 计数
115
- end
205
+ extremeZipOutputFile.syswrite(wholeFileContent) # 写入文件
206
+
207
+ processCounter += 1 # 计数
208
+ end
116
209
 
117
- extremeZipOutputFile.close # 关闭文件
210
+ extremeZipOutputFile.close # 关闭文件
118
211
  end
119
212
 
120
213
  # 写入文件内容
@@ -138,6 +231,8 @@ class ExtremeZip
138
231
 
139
232
  blockInfo={} # 块信息
140
233
  blockInfo['length']=compressed.length # 记录长度
234
+
235
+ puts "block length: #{blockInfo['length']}" # Debug
141
236
 
142
237
  @vfsDataList << blockInfo # 加入数据块列表中
143
238
  checkMemoryUsage(150)
@@ -158,7 +253,7 @@ class ExtremeZip
158
253
 
159
254
  currentBlockFile.close # 关闭文件
160
255
 
161
- #File.delete(currentBlockFile) # 删除数据块文件
256
+ File.delete(currentBlockFile) # 删除数据块文件
162
257
 
163
258
  currentBlockData
164
259
  end
@@ -167,11 +262,8 @@ class ExtremeZip
167
262
  def schedule1Block(filePartCounter)
168
263
  currentBlockData = readBlockFile(filePartCounter) # 读取块文件内容
169
264
 
170
- # currentTaskPipe = Cod.pipe # 任务分配管道
171
265
  currentResponsePipe = Cod.pipe # 任务回复管道
172
266
 
173
- puts("forking sub process, file part counter: #{filePartCounter}") # Debug.
174
-
175
267
  p1 = fork do # 复制出子进程
176
268
  compressInSubProcess(currentBlockData, currentResponsePipe) # 在子进程中具体执行的压缩代码
177
269
  end # p1 = fork do #复制出子进程
@@ -192,11 +284,8 @@ class ExtremeZip
192
284
 
193
285
  # 启动子进程。
194
286
  def launchSubProcesses
195
-
196
- #while ((@filePartCounter < @filePartAmount) && (true)) # 未处理完毕,并且未达到最大子进程个数
197
287
  while ((@filePartCounter < @filePartAmount) && (@filePartCounter<@maxSubProcessAmount)) # 未处理完毕,并且未达到最大子进程个数
198
288
  currentResponsePipe, p1 = schedule1Block(@filePartCounter) # 计划一个块的压缩计算
199
-
200
289
  end # while processDataLength < victoriaFreshData.byte_size do #未处理完毕
201
290
 
202
291
  [@processIdList, @responsePipeList]
@@ -214,7 +303,6 @@ class ExtremeZip
214
303
 
215
304
  currentResponsePipe.put currentCompressedVfsData # 将压缩后的数据块写入到回复管道中
216
305
 
217
- checkMemoryUsage(125)
218
306
  puts("finished #{Process.pid}") # Debug
219
307
  end # compressInSubProcess(currentBlockData, currentResponsePipe) # 在子进程中具体执行的压缩代码
220
308
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: EXtremeZip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2022.2.4
4
+ version: 2022.2.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hxcan Cai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-04 00:00:00.000000000 Z
11
+ date: 2022-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cod
@@ -86,20 +86,20 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2022.1.27
89
+ version: 2022.2.20
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 2022.1.27
92
+ version: 2022.2.20
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 2022.1.27
99
+ version: 2022.2.20
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 2022.1.27
102
+ version: 2022.2.20
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: hx_cbor
105
105
  requirement: !ruby/object:Gem::Requirement