karafka-rdkafka 0.17.2 → 0.17.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/certs/cert.pem +26 -0
- data/dist/{librdkafka_2.5.0.tar.gz → librdkafka_2.5.3.tar.gz} +0 -0
- data/karafka-rdkafka.gemspec +1 -1
- data/lib/rdkafka/bindings.rb +1 -1
- data/lib/rdkafka/callbacks.rb +39 -15
- data/lib/rdkafka/config.rb +2 -0
- data/lib/rdkafka/producer.rb +1 -1
- data/lib/rdkafka/version.rb +3 -3
- data/spec/rdkafka/admin_spec.rb +14 -0
- data.tar.gz.sig +0 -0
- metadata +25 -25
- metadata.gz.sig +0 -0
- data/certs/cert_chain.pem +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec66e856af65d68379f2d4bd8ec61aec8fc84fb29cd1262f0330b0cb4c19e3ef
|
4
|
+
data.tar.gz: be1f4baea61b9847228f5a14db9ebd7c615ab39fc7d5e92a88cf698b0d716903
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95e3685a12a1d382bfeb2e9612ddb2b9a09a75b6ae77836f1e89bf11e990df5e8bf28561a8e1ec6df0cd74d35704a5b12e98d680ad852b86e5f1dfc353e2b0a2
|
7
|
+
data.tar.gz: d03a3c10dba060c7f1992dfc8c64f22eb52acac7806165a15ee32843747cb499f777c2e1ba9a568b9d8e7895945af464c205c61f4ca75d20203a8fef97785a03
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Rdkafka Changelog
|
2
2
|
|
3
|
+
## 0.17.4 (2024-09-02)
|
4
|
+
- [Enhancement] Bump librdkafka to 2.5.3
|
5
|
+
- [Enhancement] Do not release GVL on `rd_kafka_name` (ferrous26)
|
6
|
+
- [Fix] Fix unused variable reference in producer (lucasmvnascimento)
|
7
|
+
|
8
|
+
## 0.17.3 (2024-08-09)
|
9
|
+
- [Fix] Mitigate a case where FFI would not restart the background events callback dispatcher in forks.
|
10
|
+
|
3
11
|
## 0.17.2 (2024-08-07)
|
4
12
|
- [Enhancement] Support returning `#details` for errors that do have topic/partition related extra info.
|
5
13
|
|
data/README.md
CHANGED
@@ -163,8 +163,8 @@ bundle exec rake produce_messages
|
|
163
163
|
|
164
164
|
| rdkafka-ruby | librdkafka | patches |
|
165
165
|
|-|-|-|
|
166
|
+
| 0.17.4 (2024-09-02) | 2.5.3 (2024-09-02) | yes |
|
166
167
|
| 0.17.0 (2024-08-01) | 2.5.0 (2024-07-10) | yes |
|
167
|
-
| 0.17.0 (2024-07-21) | 2.5.0 (2024-07-10) | no |
|
168
168
|
| 0.16.0 (2024-06-13) | 2.4.0 (2024-05-07) | no |
|
169
169
|
| 0.15.0 (2023-12-03) | 2.3.0 (2023-10-25) | no |
|
170
170
|
| 0.14.0 (2023-11-21) | 2.2.0 (2023-07-12) | no |
|
data/certs/cert.pem
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
3
|
+
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
4
|
+
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
5
|
+
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
6
|
+
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
7
|
+
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
8
|
+
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
9
|
+
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
10
|
+
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
11
|
+
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
12
|
+
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
13
|
+
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
14
|
+
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
15
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
16
|
+
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
17
|
+
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
18
|
+
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
19
|
+
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
20
|
+
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
21
|
+
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
22
|
+
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
23
|
+
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
24
|
+
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
25
|
+
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
26
|
+
-----END CERTIFICATE-----
|
Binary file
|
data/karafka-rdkafka.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.version = Rdkafka::VERSION
|
18
18
|
gem.required_ruby_version = '>= 3.0'
|
19
19
|
gem.extensions = %w(ext/Rakefile)
|
20
|
-
gem.cert_chain = %w[certs/
|
20
|
+
gem.cert_chain = %w[certs/cert.pem]
|
21
21
|
|
22
22
|
if $PROGRAM_NAME.end_with?('gem')
|
23
23
|
gem.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
|
data/lib/rdkafka/bindings.rb
CHANGED
@@ -47,7 +47,7 @@ module Rdkafka
|
|
47
47
|
|
48
48
|
# Metadata
|
49
49
|
|
50
|
-
attach_function :rd_kafka_name, [:pointer], :string
|
50
|
+
attach_function :rd_kafka_name, [:pointer], :string
|
51
51
|
attach_function :rd_kafka_memberid, [:pointer], :string, blocking: true
|
52
52
|
attach_function :rd_kafka_clusterid, [:pointer], :string, blocking: true
|
53
53
|
attach_function :rd_kafka_metadata, [:pointer, :int, :pointer, :pointer, :int], :int, blocking: true
|
data/lib/rdkafka/callbacks.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module Rdkafka
|
4
4
|
module Callbacks
|
5
|
-
|
6
5
|
# Extracts attributes of a rd_kafka_topic_result_t
|
7
6
|
#
|
8
7
|
# @private
|
@@ -149,13 +148,6 @@ module Rdkafka
|
|
149
148
|
end
|
150
149
|
end
|
151
150
|
|
152
|
-
# FFI Function used for Create Topic and Delete Topic callbacks
|
153
|
-
BackgroundEventCallbackFunction = FFI::Function.new(
|
154
|
-
:void, [:pointer, :pointer, :pointer]
|
155
|
-
) do |client_ptr, event_ptr, opaque_ptr|
|
156
|
-
BackgroundEventCallback.call(client_ptr, event_ptr, opaque_ptr)
|
157
|
-
end
|
158
|
-
|
159
151
|
# @private
|
160
152
|
class BackgroundEventCallback
|
161
153
|
def self.call(_, event_ptr, _)
|
@@ -348,13 +340,6 @@ module Rdkafka
|
|
348
340
|
end
|
349
341
|
end
|
350
342
|
|
351
|
-
# FFI Function used for Message Delivery callbacks
|
352
|
-
DeliveryCallbackFunction = FFI::Function.new(
|
353
|
-
:void, [:pointer, :pointer, :pointer]
|
354
|
-
) do |client_ptr, message_ptr, opaque_ptr|
|
355
|
-
DeliveryCallback.call(client_ptr, message_ptr, opaque_ptr)
|
356
|
-
end
|
357
|
-
|
358
343
|
# @private
|
359
344
|
class DeliveryCallback
|
360
345
|
def self.call(_, message_ptr, opaque_ptr)
|
@@ -387,5 +372,44 @@ module Rdkafka
|
|
387
372
|
end
|
388
373
|
end
|
389
374
|
end
|
375
|
+
|
376
|
+
@@mutex = Mutex.new
|
377
|
+
@@current_pid = nil
|
378
|
+
|
379
|
+
class << self
|
380
|
+
# Defines or recreates after fork callbacks that require FFI thread so the callback thread
|
381
|
+
# is always correctly initialized
|
382
|
+
#
|
383
|
+
# @see https://github.com/ffi/ffi/issues/1114
|
384
|
+
def ensure_ffi_running
|
385
|
+
@@mutex.synchronize do
|
386
|
+
return if @@current_pid == ::Process.pid
|
387
|
+
|
388
|
+
if const_defined?(:BackgroundEventCallbackFunction, false)
|
389
|
+
send(:remove_const, :BackgroundEventCallbackFunction)
|
390
|
+
send(:remove_const, :DeliveryCallbackFunction)
|
391
|
+
end
|
392
|
+
|
393
|
+
# FFI Function used for Create Topic and Delete Topic callbacks
|
394
|
+
background_event_callback_function = FFI::Function.new(
|
395
|
+
:void, [:pointer, :pointer, :pointer]
|
396
|
+
) do |client_ptr, event_ptr, opaque_ptr|
|
397
|
+
BackgroundEventCallback.call(client_ptr, event_ptr, opaque_ptr)
|
398
|
+
end
|
399
|
+
|
400
|
+
# FFI Function used for Message Delivery callbacks
|
401
|
+
delivery_callback_function = FFI::Function.new(
|
402
|
+
:void, [:pointer, :pointer, :pointer]
|
403
|
+
) do |client_ptr, message_ptr, opaque_ptr|
|
404
|
+
DeliveryCallback.call(client_ptr, message_ptr, opaque_ptr)
|
405
|
+
end
|
406
|
+
|
407
|
+
const_set(:BackgroundEventCallbackFunction, background_event_callback_function)
|
408
|
+
const_set(:DeliveryCallbackFunction, delivery_callback_function)
|
409
|
+
|
410
|
+
@@current_pid = ::Process.pid
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
390
414
|
end
|
391
415
|
end
|
data/lib/rdkafka/config.rb
CHANGED
data/lib/rdkafka/producer.rb
CHANGED
@@ -360,7 +360,7 @@ module Rdkafka
|
|
360
360
|
partitioner_name = @topics_configs.dig(topic, topic_config_hash, :partitioner) || @partitioner_name
|
361
361
|
|
362
362
|
# If the topic is not present, set to -1
|
363
|
-
partition = Rdkafka::Bindings.partitioner(partition_key, partition_count,
|
363
|
+
partition = Rdkafka::Bindings.partitioner(partition_key, partition_count, partitioner_name) if partition_count.positive?
|
364
364
|
end
|
365
365
|
|
366
366
|
# If partition is nil, use -1 to let librdafka set the partition randomly or
|
data/lib/rdkafka/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Rdkafka
|
4
|
-
VERSION = "0.17.
|
5
|
-
LIBRDKAFKA_VERSION = "2.5.
|
6
|
-
LIBRDKAFKA_SOURCE_SHA256 = "
|
4
|
+
VERSION = "0.17.4"
|
5
|
+
LIBRDKAFKA_VERSION = "2.5.3"
|
6
|
+
LIBRDKAFKA_SOURCE_SHA256 = "eaa1213fdddf9c43e28834d9a832d9dd732377d35121e42f875966305f52b8ff"
|
7
7
|
end
|
data/spec/rdkafka/admin_spec.rb
CHANGED
@@ -737,4 +737,18 @@ describe Rdkafka::Admin do
|
|
737
737
|
end
|
738
738
|
end
|
739
739
|
end
|
740
|
+
|
741
|
+
context "when operating from a fork" do
|
742
|
+
# @see https://github.com/ffi/ffi/issues/1114
|
743
|
+
it 'expect to be able to create topics and run other admin operations without hanging' do
|
744
|
+
# If the FFI issue is not mitigated, this will hang forever
|
745
|
+
pid = fork do
|
746
|
+
admin
|
747
|
+
.create_topic(topic_name, topic_partition_count, topic_replication_factor)
|
748
|
+
.wait
|
749
|
+
end
|
750
|
+
|
751
|
+
Process.wait(pid)
|
752
|
+
end
|
753
|
+
end
|
740
754
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka-rdkafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
@@ -13,30 +13,30 @@ cert_chain:
|
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
14
|
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
15
15
|
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
16
|
-
|
16
|
+
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
17
17
|
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
18
|
+
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
19
|
+
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
20
|
+
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
21
|
+
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
22
|
+
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
23
|
+
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
24
|
+
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
25
|
+
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
26
|
+
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
27
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
28
|
+
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
29
|
+
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
30
|
+
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
31
|
+
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
32
|
+
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
33
|
+
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
34
|
+
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
35
|
+
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
36
|
+
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
37
|
+
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2024-
|
39
|
+
date: 2024-09-02 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ffi
|
@@ -185,8 +185,8 @@ files:
|
|
185
185
|
- MIT-LICENSE
|
186
186
|
- README.md
|
187
187
|
- Rakefile
|
188
|
-
- certs/
|
189
|
-
- dist/librdkafka_2.5.
|
188
|
+
- certs/cert.pem
|
189
|
+
- dist/librdkafka_2.5.3.tar.gz
|
190
190
|
- dist/patches/rdkafka_sticky_assignor.c.patch
|
191
191
|
- docker-compose.yml
|
192
192
|
- ext/README.md
|
metadata.gz.sig
CHANGED
Binary file
|
data/certs/cert_chain.pem
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
3
|
-
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
4
|
-
MB4XDTIzMDgyMTA3MjU1NFoXDTI0MDgyMDA3MjU1NFowPzEQMA4GA1UEAwwHY29u
|
5
|
-
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
6
|
-
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAOuZpyQKEwsTG9plLat7
|
7
|
-
8bUaNuNBEnouTsNMr6X+XTgvyrAxTuocdsyP1sNCjdS1B8RiiDH1/Nt9qpvlBWon
|
8
|
-
sdJ1SYhaWNVfqiYStTDnCx3PRMmHRdD4KqUWKpN6VpZ1O/Zu+9Mw0COmvXgZuuO9
|
9
|
-
wMSJkXRo6dTCfMedLAIxjMeBIxtoLR2e6Jm6MR8+8WYYVWrO9kSOOt5eKQLBY7aK
|
10
|
-
b/Dc40EcJKPg3Z30Pia1M9ZyRlb6SOj6SKpHRqc7vbVQxjEw6Jjal1lZ49m3YZMd
|
11
|
-
ArMAs9lQZNdSw5/UX6HWWURLowg6k10RnhTUtYyzO9BFev0JFJftHnmuk8vtb+SD
|
12
|
-
5VPmjFXg2VOcw0B7FtG75Vackk8QKfgVe3nSPhVpew2CSPlbJzH80wChbr19+e3+
|
13
|
-
YGr1tOiaJrL6c+PNmb0F31NXMKpj/r+n15HwlTMRxQrzFcgjBlxf2XFGnPQXHhBm
|
14
|
-
kp1OFnEq4GG9sON4glRldkwzi/f/fGcZmo5fm3d+0ZdNgwIDAQABo3cwdTAJBgNV
|
15
|
-
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUPVH5+dLA80A1kJ2Uz5iGwfOa
|
16
|
-
1+swHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
17
|
-
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAnpa0jcN7JzREHMTQ
|
18
|
-
bfZ+xcvlrzuROMY6A3zIZmQgbnoZZNuX4cMRrT1p1HuwXpxdpHPw7dDjYqWw3+1h
|
19
|
-
3mXLeMuk7amjQpYoSWU/OIZMhIsARra22UN8qkkUlUj3AwTaChVKN/bPJOM2DzfU
|
20
|
-
kz9vUgLeYYFfQbZqeI6SsM7ltilRV4W8D9yNUQQvOxCFxtLOetJ00fC/E7zMUzbK
|
21
|
-
IBwYFQYsbI6XQzgAIPW6nGSYKgRhkfpmquXSNKZRIQ4V6bFrufa+DzD0bt2ZA3ah
|
22
|
-
fMmJguyb5L2Gf1zpDXzFSPMG7YQFLzwYz1zZZvOU7/UCpQsHpID/YxqDp4+Dgb+Y
|
23
|
-
qma0whX8UG/gXFV2pYWpYOfpatvahwi+A1TwPQsuZwkkhi1OyF1At3RY+hjSXyav
|
24
|
-
AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
|
25
|
-
msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
|
26
|
-
-----END CERTIFICATE-----
|