bolognese 1.4.2 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bolognese/readers/crossref_reader.rb +5 -4
- data/lib/bolognese/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml +99 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_crossrer_organization.yml +44 -0
- data/spec/readers/crossref_reader_spec.rb +19 -3
- data/spec/writers/citation_writer_spec.rb +1 -2
- data/spec/writers/citeproc_writer_spec.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 993319240a884529dde79a04d3daad8ff836a0dee55e5789fbd9bf6b4eaa3aec
|
4
|
+
data.tar.gz: '0638690ce54e4a77fcb5d8290bf48bc06c295bfe2f9e51b9c69da11641001739'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b41be204154b878723f19e07f7cc150e540ee5ca24cfed0e0948ecb486045e816e59c643636dc4627348236946a89d553dc3b239fad531d94e5188f792e39507
|
7
|
+
data.tar.gz: 84f1a2bedbe0e4847d6e23d4fb44bc96d71f1d4ed287999e94b96a16e6f93f30ed78ce9e7dac0ee77a0aa953bccfe94e7e85563162956b012ba4017bd7412837
|
data/Gemfile.lock
CHANGED
@@ -216,9 +216,10 @@ module Bolognese
|
|
216
216
|
|
217
217
|
def crossref_people(bibliographic_metadata, contributor_role)
|
218
218
|
person = bibliographic_metadata.dig("contributors", "person_name")
|
219
|
-
|
219
|
+
organization = Array.wrap(bibliographic_metadata.dig("contributors", "organization"))
|
220
|
+
person = [{ "name" => ":(unav)", "contributor_role"=>"author" }] if contributor_role == "author" && Array.wrap(person).select { |a| a["contributor_role"] == "author" }.blank? && Array.wrap(organization).select { |a| a["contributor_role"] == "author" }.blank?
|
220
221
|
|
221
|
-
Array.wrap(person).select { |a| a["contributor_role"] == contributor_role }.map do |a|
|
222
|
+
(Array.wrap(person) + Array.wrap(organization)).select { |a| a["contributor_role"] == contributor_role }.map do |a|
|
222
223
|
name_identifiers = normalize_orcid(parse_attributes(a["ORCID"])).present? ? [{ "nameIdentifier" => normalize_orcid(parse_attributes(a["ORCID"])), "nameIdentifierScheme" => "ORCID", "schemeUri"=>"https://orcid.org" }] : nil
|
223
224
|
if a["surname"].present? || a["given_name"].present? || name_identifiers.present?
|
224
225
|
{ "nameType" => "Personal",
|
@@ -230,7 +231,7 @@ module Bolognese
|
|
230
231
|
"contributorType" => contributor_role == "editor" ? "Editor" : nil }.compact
|
231
232
|
else
|
232
233
|
{ "nameType" => "Organizational",
|
233
|
-
"name" => a["name"] }
|
234
|
+
"name" => a["name"] || a["__content__"] }
|
234
235
|
end
|
235
236
|
end.unwrap
|
236
237
|
end
|
@@ -244,7 +245,7 @@ module Bolognese
|
|
244
245
|
award_title = nil
|
245
246
|
award_number = nil
|
246
247
|
award_uri = nil
|
247
|
-
|
248
|
+
|
248
249
|
Array.wrap(f.fetch("assertion")).each do |a|
|
249
250
|
if a.fetch("name") == "award_number"
|
250
251
|
award_number = a.fetch("__content__", nil)
|
data/lib/bolognese/version.rb
CHANGED
@@ -0,0 +1,99 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://doi.org/ra/10.1038
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Mozilla/5.0 (compatible; Maremma/4.5; mailto:info@datacite.org)
|
12
|
+
Accept:
|
13
|
+
- text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Date:
|
20
|
+
- Fri, 07 Feb 2020 21:53:15 GMT
|
21
|
+
Content-Type:
|
22
|
+
- application/json;charset=UTF-8
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Set-Cookie:
|
26
|
+
- __cfduid=dc698eb6996043bc1738bc745fc893e621581112395; expires=Sun, 08-Mar-20
|
27
|
+
21:53:15 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
|
28
|
+
Cf-Cache-Status:
|
29
|
+
- DYNAMIC
|
30
|
+
Expect-Ct:
|
31
|
+
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
|
32
|
+
Strict-Transport-Security:
|
33
|
+
- max-age=31536000; includeSubDomains; preload
|
34
|
+
Server:
|
35
|
+
- cloudflare
|
36
|
+
Cf-Ray:
|
37
|
+
- 561898797b351756-FRA
|
38
|
+
body:
|
39
|
+
encoding: ASCII-8BIT
|
40
|
+
string: |-
|
41
|
+
[
|
42
|
+
{
|
43
|
+
"DOI": "10.1038",
|
44
|
+
"RA": "Crossref"
|
45
|
+
}
|
46
|
+
]
|
47
|
+
http_version:
|
48
|
+
recorded_at: Fri, 07 Feb 2020 21:53:15 GMT
|
49
|
+
- request:
|
50
|
+
method: get
|
51
|
+
uri: https://api.crossref.org/works/10.1038/ng.3834/transform/application/vnd.crossref.unixsd+xml
|
52
|
+
body:
|
53
|
+
encoding: US-ASCII
|
54
|
+
string: ''
|
55
|
+
headers:
|
56
|
+
User-Agent:
|
57
|
+
- Mozilla/5.0 (compatible; Maremma/4.5; mailto:info@datacite.org)
|
58
|
+
Accept:
|
59
|
+
- text/xml
|
60
|
+
response:
|
61
|
+
status:
|
62
|
+
code: 200
|
63
|
+
message: OK
|
64
|
+
headers:
|
65
|
+
Link:
|
66
|
+
- <http://dx.doi.org/10.1038/ng.3834>; rel="canonical", <http://www.nature.com/articles/ng.3834.pdf>;
|
67
|
+
version="vor"; type="application/pdf"; rel="item", <http://www.nature.com/articles/ng.3834>;
|
68
|
+
version="vor"; type="text/html"; rel="item", <http://www.nature.com/doifinder/10.1038/ng.3834>;
|
69
|
+
version="vor"; rel="item", <http://www.nature.com/articles/ng.3834.pdf>; version="vor";
|
70
|
+
type="application/pdf"; rel="item", <http://www.springer.com/tdm>; version="tdm";
|
71
|
+
rel="license", <http://orcid.org/0000-0002-1930-9265>; title="Alexandra J
|
72
|
+
Scott"; rel="author", <http://orcid.org/0000-0001-7287-6448>; title="Emily
|
73
|
+
K Tsang"; rel="author", <http://orcid.org/0000-0002-8762-622X>; title="Liron
|
74
|
+
Ganel"; rel="author", <http://orcid.org/0000-0002-5287-627X>; title="Alexis
|
75
|
+
Battle"; rel="author", <http://orcid.org/0000-0003-3828-8970>; title="Donald
|
76
|
+
F Conrad"; rel="author"
|
77
|
+
Access-Control-Allow-Origin:
|
78
|
+
- "*"
|
79
|
+
Access-Control-Allow-Headers:
|
80
|
+
- X-Requested-With
|
81
|
+
Content-Length:
|
82
|
+
- '41407'
|
83
|
+
Server:
|
84
|
+
- http-kit
|
85
|
+
Date:
|
86
|
+
- Fri, 07 Feb 2020 21:53:16 GMT
|
87
|
+
X-Rate-Limit-Limit:
|
88
|
+
- '50'
|
89
|
+
X-Rate-Limit-Interval:
|
90
|
+
- 1s
|
91
|
+
Connection:
|
92
|
+
- close
|
93
|
+
body:
|
94
|
+
encoding: ASCII-8BIT
|
95
|
+
string: !binary |-
|
96
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iam91cm5hbF9hcnRpY2xlIj4xMC4xMDM4L25nLjM4MzQ8L2RvaT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InB1Ymxpc2hlci1uYW1lIiB0eXBlPSJzdHJpbmciPlNwcmluZ2VyIFNjaWVuY2UgYW5kIEJ1c2luZXNzIE1lZGlhIExMQzwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwcmVmaXgtbmFtZSIgdHlwZT0ic3RyaW5nIj5TcHJpbmdlciBTY2llbmNlIGFuZCBCdXNpbmVzcyBNZWRpYSBMTEM8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ibWVtYmVyLWlkIiB0eXBlPSJudW1iZXIiPjI5NzwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRhdGlvbi1pZCIgdHlwZT0ibnVtYmVyIj44OTMxMjI0MjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJqb3VybmFsLWlkIiB0eXBlPSJudW1iZXIiPjM0MTI8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iZGVwb3NpdC10aW1lc3RhbXAiIHR5cGU9Im51bWJlciI+MjAxOTExMDIwOTMwMDY5OTk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ib3duZXItcHJlZml4IiB0eXBlPSJzdHJpbmciPjEwLjEwMzg8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ibGFzdC11cGRhdGUiIHR5cGU9ImRhdGUiPjIwMTktMTEtMDJUMDg6NTA6MDVaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNyZWF0ZWQiIHR5cGU9ImRhdGUiPjIwMTctMDQtMDNUMjI6Mjc6MTlaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNpdGVkYnktY291bnQiIHR5cGU9Im51bWJlciI+Nzk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icmVsYXRpb24iIHR5cGU9ImRvaSIgY2xhaW09ImlzUHJlcHJpbnRPZiI+MTAuMTEwMS8wNTU5NjI8L2NybS1pdGVtPg0KICAgICAgICA8ZG9pX3JlY29yZD4NCiAgICAgICAgICA8Y3Jvc3NyZWYgeG1sbnM9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIGh0dHA6Ly9kb2kuY3Jvc3NyZWYub3JnL3NjaGVtYXMvdW5peHJlZjEuMS54c2QiPg0KICAgICAgICAgICAgPGpvdXJuYWw+DQogICAgICAgICAgICAgIDxqb3VybmFsX21ldGFkYXRhIGxhbmd1YWdlPSJlbiI+DQogICAgICAgICAgICAgICAgPGZ1bGxfdGl0bGU+TmF0dXJlIEdlbmV0aWNzPC9mdWxsX3RpdGxlPg0KICAgICAgICAgICAgICAgIDxhYmJyZXZfdGl0bGU+TmF0IEdlbmV0PC9hYmJyZXZfdGl0bGU+DQogICAgICAgICAgICAgICAgPGlzc24gbWVkaWFfdHlwZT0icHJpbnQiPjEwNjEtNDAzNjwvaXNzbj4NCiAgICAgICAgICAgICAgICA8aXNzbiBtZWRpYV90eXBlPSJlbGVjdHJvbmljIj4xNTQ2LTE3MTg8L2lzc24+DQogICAgICAgICAgICAgIDwvam91cm5hbF9tZXRhZGF0YT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfaXNzdWU+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0icHJpbnQiPg0KICAgICAgICAgICAgICAgICAgPG1vbnRoPjU8L21vbnRoPg0KICAgICAgICAgICAgICAgICAgPHllYXI+MjAxNzwveWVhcj4NCiAgICAgICAgICAgICAgICA8L3B1YmxpY2F0aW9uX2RhdGU+DQogICAgICAgICAgICAgICAgPGpvdXJuYWxfdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgPHZvbHVtZT40OTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgIDwvam91cm5hbF92b2x1bWU+DQogICAgICAgICAgICAgICAgPGlzc3VlPjU8L2lzc3VlPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfaXNzdWU+DQogICAgICAgICAgICAgIDxqb3VybmFsX2FydGljbGUgcHVibGljYXRpb25fdHlwZT0iZnVsbF90ZXh0Ij4NCiAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPHRpdGxlPlRoZSBpbXBhY3Qgb2Ygc3RydWN0dXJhbCB2YXJpYXRpb24gb24gaHVtYW4gZ2VuZSBleHByZXNzaW9uPC90aXRsZT4NCiAgICAgICAgICAgICAgICA8L3RpdGxlcz4NCiAgICAgICAgICAgICAgICA8Y29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgICAgPG9yZ2FuaXphdGlvbiBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJmaXJzdCI+R1RFeCBDb25zb3J0aXVtPC9vcmdhbml6YXRpb24+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iZmlyc3QiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5Db2xieTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+Q2hpYW5nPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+QWxleGFuZHJhIEo8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPlNjb3R0PC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMTkzMC05MjY1PC9PUkNJRD4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkpvZSBSPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5EYXZpczwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkVtaWx5IEs8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPlRzYW5nPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtNzI4Ny02NDQ4PC9PUkNJRD4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlhpbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TGk8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5ZdW5naWw8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPktpbTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlRhcmlrPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5IYWR6aWM8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5GYXJoYW4gTjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+RGFtYW5pPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+TGlyb248L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkdhbmVsPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItODc2Mi02MjJYPC9PUkNJRD4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlN0ZXBoZW4gQjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TW9udGdvbWVyeTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkFsZXhpczwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+QmF0dGxlPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItNTI4Ny02MjdYPC9PUkNJRD4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkRvbmFsZCBGPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5Db25yYWQ8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0zODI4LTg5NzA8L09SQ0lEPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+SXJhIE08L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkhhbGw8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDwvY29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9Im9ubGluZSI+DQogICAgICAgICAgICAgICAgICA8bW9udGg+NDwvbW9udGg+DQogICAgICAgICAgICAgICAgICA8ZGF5PjM8L2RheT4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTc8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9InByaW50Ij4NCiAgICAgICAgICAgICAgICAgIDxtb250aD41PC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTc8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwYWdlcz4NCiAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjY5MjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgIDxsYXN0X3BhZ2U+Njk5PC9sYXN0X3BhZ2U+DQogICAgICAgICAgICAgICAgPC9wYWdlcz4NCiAgICAgICAgICAgICAgICA8cHVibGlzaGVyX2l0ZW0+DQogICAgICAgICAgICAgICAgICA8aWRlbnRpZmllciBpZF90eXBlPSJwaWkiPkJGbmczODM0PC9pZGVudGlmaWVyPg0KICAgICAgICAgICAgICAgIDwvcHVibGlzaGVyX2l0ZW0+DQogICAgICAgICAgICAgICAgPGNyb3NzbWFyaz4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfdmVyc2lvbj4xPC9jcm9zc21hcmtfdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfcG9saWN5PjEwLjEwMDcvc3ByaW5nZXJfY3Jvc3NtYXJrX3BvbGljeTwvY3Jvc3NtYXJrX3BvbGljeT4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfZG9tYWlucz4NCiAgICAgICAgICAgICAgICAgICAgPGNyb3NzbWFya19kb21haW4+DQogICAgICAgICAgICAgICAgICAgICAgPGRvbWFpbj5saW5rLnNwcmluZ2VyLmNvbTwvZG9tYWluPg0KICAgICAgICAgICAgICAgICAgICA8L2Nyb3NzbWFya19kb21haW4+DQogICAgICAgICAgICAgICAgICA8L2Nyb3NzbWFya19kb21haW5zPg0KICAgICAgICAgICAgICAgICAgPGNyb3NzbWFya19kb21haW5fZXhjbHVzaXZlPmZhbHNlPC9jcm9zc21hcmtfZG9tYWluX2V4Y2x1c2l2ZT4NCiAgICAgICAgICAgICAgICAgIDxjdXN0b21fbWV0YWRhdGE+DQogICAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gZ3JvdXBfbGFiZWw9IkFydGljbGUgSGlzdG9yeSIgZ3JvdXBfbmFtZT0iQXJ0aWNsZUhpc3RvcnkiIGxhYmVsPSJSZWNlaXZlZCIgbmFtZT0icmVjZWl2ZWQiIG9yZGVyPSIxIj45IEp1bmUgMjAxNjwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIGdyb3VwX2xhYmVsPSJBcnRpY2xlIEhpc3RvcnkiIGdyb3VwX25hbWU9IkFydGljbGVIaXN0b3J5IiBsYWJlbD0iQWNjZXB0ZWQiIG5hbWU9ImFjY2VwdGVkIiBvcmRlcj0iMiI+MTMgTWFyY2ggMjAxNzwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIGdyb3VwX2xhYmVsPSJBcnRpY2xlIEhpc3RvcnkiIGdyb3VwX25hbWU9IkFydGljbGVIaXN0b3J5IiBsYWJlbD0iRmlyc3QgT25saW5lIiBuYW1lPSJmaXJzdF9vbmxpbmUiIG9yZGVyPSIzIj4zIEFwcmlsIDIwMTc8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBncm91cF9sYWJlbD0iQ29tcGV0aW5nIGludGVyZXN0cyIgZ3JvdXBfbmFtZT0iRXRoaWNzSGVhZGluZyIgbmFtZT0iRXRoaWNzIiBvcmRlcj0iMSI+RC5GLkMuIGlzIGEgcGFpZCBjb25zdWx0YW50IG9mIFBpZXJpYW5EeC4gVGhlIGF1dGhvcnMgZGVjbGFyZSBubyBvdGhlciBjb21wZXRpbmcgZmluYW5jaWFsIGludGVyZXN0cy48L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPGFpOnByb2dyYW0geG1sbnM6YWk9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL0FjY2Vzc0luZGljYXRvcnMueHNkIiBuYW1lPSJBY2Nlc3NJbmRpY2F0b3JzIj4NCiAgICAgICAgICAgICAgICAgICAgICA8YWk6bGljZW5zZV9yZWYgYXBwbGllc190bz0idGRtIj5odHRwOi8vd3d3LnNwcmluZ2VyLmNvbS90ZG08L2FpOmxpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICAgICAgICA8L2FpOnByb2dyYW0+DQogICAgICAgICAgICAgICAgICA8L2N1c3RvbV9tZXRhZGF0YT4NCiAgICAgICAgICAgICAgICA8L2Nyb3NzbWFyaz4NCiAgICAgICAgICAgICAgICA8ZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMzgvbmcuMzgzNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPHRpbWVzdGFtcD4yMDE5MTEwMjA5MzAwNjk5OTwvdGltZXN0YW1wPg0KICAgICAgICAgICAgICAgICAgPHJlc291cmNlIGNvbnRlbnRfdmVyc2lvbj0idm9yIj5odHRwOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbmcuMzgzNDwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICA8Y29sbGVjdGlvbiBwcm9wZXJ0eT0iY3Jhd2xlci1iYXNlZCI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vd3d3Lm5hdHVyZS5jb20vZG9pZmluZGVyLzEwLjEwMzgvbmcuMzgzNDwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0gY3Jhd2xlcj0iaVBhcmFkaWdtcyI+DQogICAgICAgICAgICAgICAgICAgICAgPHJlc291cmNlIG1pbWVfdHlwZT0iYXBwbGljYXRpb24vcGRmIj5odHRwOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbmcuMzgzNC5wZGY8L3Jlc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgICAgICAgICA8Y29sbGVjdGlvbiBwcm9wZXJ0eT0idGV4dC1taW5pbmciPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgICA8cmVzb3VyY2UgbWltZV90eXBlPSJhcHBsaWNhdGlvbi9wZGYiPmh0dHA6Ly93d3cubmF0dXJlLmNvbS9hcnRpY2xlcy9uZy4zODM0LnBkZjwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgPHJlc291cmNlIG1pbWVfdHlwZT0idGV4dC9odG1sIj5odHRwOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbmcuMzgzNDwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgICAgICAgICA8L2RvaV9kYXRhPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbl9saXN0Pg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QW0uIEouIEh1bS4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlNMIEVkd2FyZHM8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT45Mzwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT43Nzk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDEzPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5hamhnLjIwMTMuMTAuMDEyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RWR3YXJkcywgUy5MLiwgQmVlc2xleSwgSi4sIEZyZW5jaCwgSi5ELiAmYW1wOyBEdW5uaW5nLCBBLk0uIEJleW9uZCBHV0FTczogaWxsdW1pbmF0aW5nIHRoZSBkYXJrIHJvYWQgZnJvbSBhc3NvY2lhdGlvbiB0byBmdW5jdGlvbi4gQW0uIEouIEh1bS4gR2VuZXQuIDkzLCA3NznigJM3OTcgKDIwMTMpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMiI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdHVyZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5UIExhcHBhbGFpbmVuPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NTAxPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjUwNjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uYXR1cmUxMjUzMTwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkxhcHBhbGFpbmVuLCBULiBldCBhbC4gVHJhbnNjcmlwdG9tZSBhbmQgZ2Vub21lIHNlcXVlbmNpbmcgdW5jb3ZlcnMgZnVuY3Rpb25hbCB2YXJpYXRpb24gaW4gaHVtYW5zLiBOYXR1cmUgNTAxLCA1MDbigJM1MTEgKDIwMTMpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMyI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTI2L3NjaWVuY2UuMTI2MjExMDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkdURXggQ29uc29ydGl1bS4gSHVtYW4gZ2Vub21pY3M6IHRoZSBHZW5vdHlwZS1UaXNzdWUgRXhwcmVzc2lvbiAoR1RFeCkgcGlsb3QgYW5hbHlzaXM6IG11bHRpdGlzc3VlIGdlbmUgcmVndWxhdGlvbiBpbiBodW1hbnMuIFNjaWVuY2UgMzQ4LCA2NDjigJM2NjAgKDIwMTUpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSNCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkdlbm9tZSBSZXMuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkEgQmF0dGxlPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MjQ8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTQ8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDEvZ3IuMTU1MTkyLjExMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkJhdHRsZSwgQS4gZXQgYWwuIENoYXJhY3Rlcml6aW5nIHRoZSBnZW5ldGljIGJhc2lzIG9mIHRyYW5zY3JpcHRvbWUgZGl2ZXJzaXR5IHRocm91Z2ggUk5BLXNlcXVlbmNpbmcgb2YgOTIyIGluZGl2aWR1YWxzLiBHZW5vbWUgUmVzLiAyNCwgMTTigJMyNCAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I1Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmF0dXJlMTUzOTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj4xMDAwIEdlbm9tZXMgUHJvamVjdCBDb25zb3J0aXVtLiBBIGdsb2JhbCByZWZlcmVuY2UgZm9yIGh1bWFuIGdlbmV0aWMgdmFyaWF0aW9uLiBOYXR1cmUgNTI2LCA2OOKAkzc0ICgyMDE1KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjYiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmU8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+REYgQ29ucmFkPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDY0PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjcwNDwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTA8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uYXR1cmUwODUxNjwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkNvbnJhZCwgRC5GLiBldCBhbC4gT3JpZ2lucyBhbmQgZnVuY3Rpb25hbCBpbXBhY3Qgb2YgY29weSBudW1iZXIgdmFyaWF0aW9uIGluIHRoZSBodW1hbiBnZW5vbWUuIE5hdHVyZSA0NjQsIDcwNOKAkzcxMiAoMjAxMCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBSZXYuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5DIEFsa2FuPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTI8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MzYzPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25yZzI5NTg8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5BbGthbiwgQy4sIENvZSwgQi5QLiAmYW1wOyBFaWNobGVyLCBFLkUuIEdlbm9tZSBzdHJ1Y3R1cmFsIHZhcmlhdGlvbiBkaXNjb3ZlcnkgYW5kIGdlbm90eXBpbmcuIE5hdC4gUmV2LiBHZW5ldC4gMTIsIDM2M+KAkzM3NiAoMjAxMSkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBSZXYuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5KIFdlaXNjaGVuZmVsZHQ8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xNDwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMjU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDEzPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbnJnMzM3MzwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPldlaXNjaGVuZmVsZHQsIEouLCBTeW1tb25zLCBPLiwgU3BpdHosIEYuICZhbXA7IEtvcmJlbCwgSi5PLiBQaGVub3R5cGljIGltcGFjdCBvZiBnZW5vbWljIHN0cnVjdHVyYWwgdmFyaWF0aW9uOiBpbnNpZ2h0cyBmcm9tIGFuZCBmb3IgaHVtYW4gZGlzZWFzZS4gTmF0LiBSZXYuIEdlbmV0LiAxNCwgMTI14oCTMTM4ICgyMDEzKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjkiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5TY2llbmNlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkJFIFN0cmFuZ2VyPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MzE1PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjg0ODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTEyNi9zY2llbmNlLjExMzY2Nzg8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TdHJhbmdlciwgQi5FLiBldCBhbC4gUmVsYXRpdmUgaW1wYWN0IG9mIG51Y2xlb3RpZGUgYW5kIGNvcHkgbnVtYmVyIHZhcmlhdGlvbiBvbiBnZW5lIGV4cHJlc3Npb24gcGhlbm90eXBlcy4gU2NpZW5jZSAzMTUsIDg0OOKAkzg1MyAoMjAwNykuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IxMCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkdlbm9tZSBSZXMuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkEgU2NobGF0dGw8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4yMTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4yMDA0PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTAxL2dyLjEyMjYxNC4xMTE8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TY2hsYXR0bCwgQS4sIEFuZGVycywgUy4sIFdhc3phaywgUy5NLiwgSHViZXIsIFcuICZhbXA7IEtvcmJlbCwgSi5PLiBSZWxhdGluZyBDTlZzIHRvIHRyYW5zY3JpcHRvbWUgZGF0YSBhdCBmaW5lIHJlc29sdXRpb246IGFzc2Vzc21lbnQgb2YgdGhlIGVmZmVjdCBvZiB2YXJpYW50IHNpemUsIHR5cGUsIGFuZCBvdmVybGFwIHdpdGggZnVuY3Rpb25hbCByZWdpb25zLiBHZW5vbWUgUmVzLiAyMSwgMjAwNOKAkzIwMTMgKDIwMTEpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMTEiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QTG9TIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5KIEJyeW9pczwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjEwPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPmUxMDA0NDYxPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxNDwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMzcxL2pvdXJuYWwucGdlbi4xMDA0NDYxPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+QnJ5b2lzLCBKLiBldCBhbC4gQ2lzIGFuZCB0cmFucyBlZmZlY3RzIG9mIGh1bWFuIGdlbm9taWMgdmFyaWFudHMgb24gZ2VuZSBleHByZXNzaW9uLiBQTG9TIEdlbmV0LiAxMCwgZTEwMDQ0NjEgKDIwMTQpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMTIiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QTG9TIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5FUiBHYW1hem9uPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+Nzwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT5lMTAwMTI5MjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTE8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTM3MS9qb3VybmFsLnBnZW4uMTAwMTI5MjwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkdhbWF6b24sIEUuUi4sIE5pY29sYWUsIEQuTC4gJmFtcDsgQ294LCBOLkouIEEgc3R1ZHkgb2YgQ05WcyBhcyB0cmFpdC1hc3NvY2lhdGVkIHBvbHltb3JwaGlzbXMgYW5kIGFzIGV4cHJlc3Npb24gcXVhbnRpdGF0aXZlIHRyYWl0IGxvY2kuIFBMb1MgR2VuZXQuIDcsIGUxMDAxMjkyICgyMDExKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjEzIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0dXJlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlBIIFN1ZG1hbnQ8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT41MjY8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NzU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE1PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmF0dXJlMTUzOTQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TdWRtYW50LCBQLkguIGV0IGFsLiBBbiBpbnRlZ3JhdGVkIG1hcCBvZiBzdHJ1Y3R1cmFsIHZhcmlhdGlvbiBpbiAyLDUwNCBodW1hbiBnZW5vbWVzLiBOYXR1cmUgNTI2LCA3NeKAkzgxICgyMDE1KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjE0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBNZXRob2RzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkMgQ2hpYW5nPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTI8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+OTY2PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25tZXRoLjM1MDU8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5DaGlhbmcsIEMuIGV0IGFsLiBTcGVlZFNlcTogdWx0cmEtZmFzdCBwZXJzb25hbCBnZW5vbWUgYW5hbHlzaXMgYW5kIGludGVycHJldGF0aW9uLiBOYXQuIE1ldGhvZHMgMTIsIDk2NuKAkzk2OCAoMjAxNSkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IxNSI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+TGksIEguIEFsaWduaW5nIHNlcXVlbmNlIHJlYWRzLCBjbG9uZSBzZXF1ZW5jZXMgYW5kIGFzc2VtYmx5IGNvbnRpZ3Mgd2l0aCBCV0EtTUVNLiBQcmVwcmludCBhdCANCiAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzEzMDMuMzk5Ny8NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgKDIwMTMpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMTYiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5HZW5vbWUgQmlvbC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+Uk0gTGF5ZXI8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xNTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT5SODQ8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExODYvZ2ItMjAxNC0xNS02LXI4NDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkxheWVyLCBSLk0uLCBDaGlhbmcsIEMuLCBRdWlubGFuLCBBLlIuICZhbXA7IEhhbGwsIEkuTS4gTFVNUFk6IGEgcHJvYmFiaWxpc3RpYyBmcmFtZXdvcmsgZm9yIHN0cnVjdHVyYWwgdmFyaWFudCBkaXNjb3ZlcnkuIEdlbm9tZSBCaW9sLiAxNSwgUjg0ICgyMDE0KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjE3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBHZW5ldC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+UkUgSGFuZHNha2VyPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDM8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjY5PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25nLjc2ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkhhbmRzYWtlciwgUi5FLiwgS29ybiwgSi5NLiwgTmVtZXNoLCBKLiAmYW1wOyBNY0NhcnJvbGwsIFMuQS4gRGlzY292ZXJ5IGFuZCBnZW5vdHlwaW5nIG9mIGdlbm9tZSBzdHJ1Y3R1cmFsIHBvbHltb3JwaGlzbSBieSBzZXF1ZW5jaW5nIG9uIGEgcG9wdWxhdGlvbiBzY2FsZS4gTmF0LiBHZW5ldC4gNDMsIDI2OeKAkzI3NiAoMjAxMSkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IxOCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkJpb2luZm9ybWF0aWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlAgRGFuZWNlazwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI3PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIxNTY8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDExPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTMvYmlvaW5mb3JtYXRpY3MvYnRyMzMwPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RGFuZWNlaywgUC4gZXQgYWwuIFRoZSB2YXJpYW50IGNhbGwgZm9ybWF0IGFuZCBWQ0Z0b29scy4gQmlvaW5mb3JtYXRpY3MgMjcsIDIxNTbigJMyMTU4ICgyMDExKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjE5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QmlvaW5mb3JtYXRpY3M8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+SCBPbmdlbjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjMyPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE0Nzk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTMvYmlvaW5mb3JtYXRpY3MvYnR2NzIyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+T25nZW4sIEguLCBCdWlsLCBBLiwgQnJvd24sIEEuQS4sIERlcm1pdHpha2lzLCBFLlQuICZhbXA7IERlbGFuZWF1LCBPLiBGYXN0IGFuZCBlZmZpY2llbnQgUVRMIG1hcHBlciBmb3IgdGhvdXNhbmRzIG9mIG1vbGVjdWxhciBwaGVub3R5cGVzLiBCaW9pbmZvcm1hdGljcyAzMiwgMTQ3OeKAkzE0ODUgKDIwMTYpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMjAiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5HZW5vbWUgUmVzLjwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5BIE1jS2VubmE8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4yMDwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMjk3PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMDwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTAxL2dyLjEwNzUyNC4xMTA8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5NY0tlbm5hLCBBLiBldCBhbC4gVGhlIEdlbm9tZSBBbmFseXNpcyBUb29sa2l0OiBhIE1hcFJlZHVjZSBmcmFtZXdvcmsgZm9yIGFuYWx5emluZyBuZXh0LWdlbmVyYXRpb24gRE5BIHNlcXVlbmNpbmcgZGF0YS4gR2Vub21lIFJlcy4gMjAsIDEyOTfigJMxMzAzICgyMDEwKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+R2VuZXRpY3M8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+RiBIb3Jtb3pkaWFyaTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjE5ODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40OTc8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjE1MzQvZ2VuZXRpY3MuMTE0LjE2NzkwODwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkhvcm1vemRpYXJpLCBGLiwgS29zdGVtLCBFLiwgS2FuZywgRS5ZLiwgUGFzYW5pdWMsIEIuICZhbXA7IEVza2luLCBFLiBJZGVudGlmeWluZyBjYXVzYWwgdmFyaWFudHMgYXQgbG9jaSB3aXRoIG11bHRpcGxlIHNpZ25hbHMgb2YgYXNzb2NpYXRpb24uIEdlbmV0aWNzIDE5OCwgNDk34oCTNTA4ICgyMDE0KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjIyIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBHZW5ldC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+TSBHeW1yZWs8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT40ODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4yMjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTY8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZy4zNDYxPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+R3ltcmVrLCBNLiBldCBhbC4gQWJ1bmRhbnQgY29udHJpYnV0aW9uIG9mIHNob3J0IHRhbmRlbSByZXBlYXRzIHRvIGdlbmUgZXhwcmVzc2lvbiB2YXJpYXRpb24gaW4gaHVtYW5zLiBOYXQuIEdlbmV0LiA0OCwgMjLigJMyOSAoMjAxNikuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IyMyI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkFtLiBKLiBIdW0uIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5KIFlhbmc8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT44ODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT43NjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTE8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAxNi9qLmFqaGcuMjAxMC4xMS4wMTE8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5ZYW5nLCBKLiwgTGVlLCBTLkguLCBHb2RkYXJkLCBNLkUuICZhbXA7IFZpc3NjaGVyLCBQLk0uIEdDVEE6IGEgdG9vbCBmb3IgZ2Vub21lLXdpZGUgY29tcGxleCB0cmFpdCBhbmFseXNpcy4gQW0uIEouIEh1bS4gR2VuZXQuIDg4LCA3NuKAkzgyICgyMDExKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjI0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QW0uIEouIEh1bS4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkEgR3VzZXY8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT45NTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT41MzU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5hamhnLjIwMTQuMTAuMDA0PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+R3VzZXYsIEEuIGV0IGFsLiBQYXJ0aXRpb25pbmcgaGVyaXRhYmlsaXR5IG9mIHJlZ3VsYXRvcnkgYW5kIGNlbGwtdHlwZS1zcGVjaWZpYyB2YXJpYW50cyBhY3Jvc3MgMTEgY29tbW9uIGRpc2Vhc2VzLiBBbS4gSi4gSHVtLiBHZW5ldC4gOTUsIDUzNeKAkzU1MiAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IyNSI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdHVyZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5NIExlazwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjUzNjwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4yODU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmF0dXJlMTkwNTc8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5MZWssIE0uIGV0IGFsLiBBbmFseXNpcyBvZiBwcm90ZWluLWNvZGluZyBnZW5ldGljIHZhcmlhdGlvbiBpbiA2MCw3MDYgaHVtYW5zLiBOYXR1cmUgNTM2LCAyODXigJMyOTEgKDIwMTYpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMjYiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uYXR1cmUxMTI0NzwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkVOQ09ERSBQcm9qZWN0IENvbnNvcnRpdW0uIEFuIGludGVncmF0ZWQgZW5jeWNsb3BlZGlhIG9mIEROQSBlbGVtZW50cyBpbiB0aGUgaHVtYW4gZ2Vub21lLiBOYXR1cmUgNDg5LCA1N+KAkzc0ICgyMDEyKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjI3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+R2Vub21lIEJpb2wuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlkgRnU8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xNTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40ODA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExODYvczEzMDU5LTAxNC0wNDgwLTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5GdSwgWS4gZXQgYWwuIEZ1blNlcTI6IGEgZnJhbWV3b3JrIGZvciBwcmlvcml0aXppbmcgbm9uY29kaW5nIHJlZ3VsYXRvcnkgdmFyaWFudHMgaW4gY2FuY2VyLiBHZW5vbWUgQmlvbC4gMTUsIDQ4MCAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IyOCI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDkzL2RhdGFiYXNlL2JhdjA4NTwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkFzaG9vciwgSC4sIEtsZWZ0b2dpYW5uaXMsIEQuLCBSYWRvdmFub3ZpYywgQS4gJmFtcDsgQmFqaWMsIFYuQi4gREVOZGI6IGRhdGFiYXNlIG9mIGludGVncmF0ZWQgaHVtYW4gZW5oYW5jZXJzLiBEYXRhYmFzZSAyMDE1LCAoMjAxNSkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IyOSI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk51Y2xlaWMgQWNpZHMgUmVzLjwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5EIFdlbHRlcjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQyPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPkQxMDAxPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxNDwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDkzL25hci9na3QxMjI5PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+V2VsdGVyLCBELiBldCBhbC4gVGhlIE5IR1JJIEdXQVMgQ2F0YWxvZywgYSBjdXJhdGVkIHJlc291cmNlIG9mIFNOUC10cmFpdCBhc3NvY2lhdGlvbnMuIE51Y2xlaWMgQWNpZHMgUmVzLiA0MiwgRDEwMDHigJNEMTAwNiAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1IzMCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdC4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlMgR3JldGFyc2RvdHRpcjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQyPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjY5MjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTA8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZy42MjI8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5HcmV0YXJzZG90dGlyLCBTLiBldCBhbC4gR2Vub21lLXdpZGUgYXNzb2NpYXRpb24gc3R1ZHkgaWRlbnRpZmllcyBhIHNlcXVlbmNlIHZhcmlhbnQgd2l0aGluIHRoZSBEQUIySVAgZ2VuZSBjb25mZXJyaW5nIHN1c2NlcHRpYmlsaXR5IHRvIGFiZG9taW5hbCBhb3J0aWMgYW5ldXJ5c20uIE5hdC4gR2VuZXQuIDQyLCA2OTLigJM2OTcgKDIwMTApLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMzEiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmU8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+WSBPa2FkYTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjUwNjwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4zNzY8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmF0dXJlMTI4NzM8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5Pa2FkYSwgWS4gZXQgYWwuIEdlbmV0aWNzIG9mIHJoZXVtYXRvaWQgYXJ0aHJpdGlzIGNvbnRyaWJ1dGVzIHRvIGJpb2xvZ3kgYW5kIGRydWcgZGlzY292ZXJ5LiBOYXR1cmUgNTA2LCAzNzbigJMzODEgKDIwMTQpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMzIiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXQuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5BIFN1enVraTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjM0PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjM5NTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZzEyMDY8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TdXp1a2ksIEEuIGV0IGFsLiBGdW5jdGlvbmFsIGhhcGxvdHlwZXMgb2YgUEFESTQsIGVuY29kaW5nIGNpdHJ1bGxpbmF0aW5nIGVuenltZSBwZXB0aWR5bGFyZ2luaW5lIGRlaW1pbmFzZSA0LCBhcmUgYXNzb2NpYXRlZCB3aXRoIHJoZXVtYXRvaWQgYXJ0aHJpdGlzLiBOYXQuIEdlbmV0LiAzNCwgMzk14oCTNDAyICgyMDAzKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjMzIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QXJjaC4gTWVkLiBSZXMuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlgtSyBZYW5nPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDY8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MzE3PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDE2L2ouYXJjbWVkLjIwMTUuMDUuMDExPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+WWFuZywgWC4tSy4gZXQgYWwuIEFzc29jaWF0aW9ucyBiZXR3ZWVuIFBBREk0IGdlbmUgcG9seW1vcnBoaXNtcyBhbmQgcmhldW1hdG9pZCBhcnRocml0aXM6IGFuIHVwZGF0ZWQgbWV0YS1hbmFseXNpcy4gQXJjaC4gTWVkLiBSZXMuIDQ2LCAzMTfigJMzMjUgKDIwMTUpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMzQiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXQuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5DIFd1PC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDY8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTAwMTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTQ8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZy4zMDY0PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+V3UsIEMuIGV0IGFsLiBKb2ludCBhbmFseXNpcyBvZiB0aHJlZSBnZW5vbWUtd2lkZSBhc3NvY2lhdGlvbiBzdHVkaWVzIG9mIGVzb3BoYWdlYWwgc3F1YW1vdXMgY2VsbCBjYXJjaW5vbWEgaW4gQ2hpbmVzZSBwb3B1bGF0aW9ucy4gTmF0LiBHZW5ldC4gNDYsIDEwMDHigJMxMDA2ICgyMDE0KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjM1Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0LiBHZW5ldC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+SkggQmFycmV0dDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQzPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjExMDg8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDExPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmcuOTU5PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+QmFycmV0dCwgSi5ILiBldCBhbC4gR2Vub21lLXdpZGUgYXNzb2NpYXRpb24gc3R1ZHkgaWRlbnRpZmllcyB0aHJlZSBuZXcgbWVsYW5vbWEgc3VzY2VwdGliaWxpdHkgbG9jaS4gTmF0LiBHZW5ldC4gNDMsIDExMDjigJMxMTEzICgyMDExKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjM2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+SHVtLiBNb2wuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5TTiBTdGFjZXk8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4yNTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMDA4PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxNjwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDkzL2htZy9kZHY2MjI8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TdGFjZXksIFMuTi4gZXQgYWwuIEluc2VydGlvbiBvZiBhbiBTVkEtRSByZXRyb3RyYW5zcG9zb24gaW50byB0aGUgQ0FTUDggZ2VuZSBpcyBhc3NvY2lhdGVkIHdpdGggcHJvdGVjdGlvbiBhZ2FpbnN0IHByb3N0YXRlIGNhbmNlci4gSHVtLiBNb2wuIEdlbmV0LiAyNSwgMTAwOOKAkzEwMTggKDIwMTYpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMzciPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXQuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5SIGRlIENpZDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQxPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIxMTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDk8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZy4zMTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5kZSBDaWQsIFIuIGV0IGFsLiBEZWxldGlvbiBvZiB0aGUgbGF0ZSBjb3JuaWZpZWQgZW52ZWxvcGUgTENFM0IgYW5kIExDRTNDIGdlbmVzIGFzIGEgc3VzY2VwdGliaWxpdHkgZmFjdG9yIGZvciBwc29yaWFzaXMuIE5hdC4gR2VuZXQuIDQxLCAyMTHigJMyMTUgKDIwMDkpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSMzgiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXQuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5KQyBDaGFtYmVyczwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQzPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjExMzE8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDExPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmcuOTcwPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+Q2hhbWJlcnMsIEouQy4gZXQgYWwuIEdlbm9tZS13aWRlIGFzc29jaWF0aW9uIHN0dWR5IGlkZW50aWZpZXMgbG9jaSBpbmZsdWVuY2luZyBjb25jZW50cmF0aW9ucyBvZiBsaXZlciBlbnp5bWVzIGluIHBsYXNtYS4gTmF0LiBHZW5ldC4gNDMsIDExMzHigJMxMTM4ICgyMDExKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjM5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0dXJlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPk4gQ3JhZGRvY2s8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT40NjQ8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NzEzPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMDwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25hdHVyZTA4OTc5PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+Q3JhZGRvY2ssIE4uIGV0IGFsLiBHZW5vbWUtd2lkZSBhc3NvY2lhdGlvbiBzdHVkeSBvZiBDTlZzIGluIDE2LDAwMCBjYXNlcyBvZiBlaWdodCBjb21tb24gZGlzZWFzZXMgYW5kIDMsMDAwIHNoYXJlZCBjb250cm9scy4gTmF0dXJlIDQ2NCwgNzEz4oCTNzIwICgyMDEwKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjQwIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5MaSwgWC4gZXQgYWwuIFRoZSBpbXBhY3Qgb2YgcmFyZSB2YXJpYXRpb24gb24gZ2VuZSBleHByZXNzaW9uIGFjcm9zcyB0aXNzdWVzLiBQcmVwcmludCBhdCANCiAgICAgICAgICAgICAgICAgICAgaHR0cDovL2Jpb3J4aXYub3JnL2NvbnRlbnQvZWFybHkvMjAxNi8wOS8wOS8wNzQ0NDMvDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICgyMDE2KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjQxIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+RnJvbnQuIEdlbmV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5YIExpPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT42NzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkxpLCBYLiAmYW1wOyBNb250Z29tZXJ5LCBTLkIuIERldGVjdGlvbiBhbmQgaW1wYWN0IG9mIHJhcmUgcmVndWxhdG9yeSB2YXJpYW50cyBpbiBodW1hbiBkaXNlYXNlLiBGcm9udC4gR2VuZXQuIDQsIDY3ICgyMDEzKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjQyIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QW0uIEouIEh1bS4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlggTGk8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT45NTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4yNDU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5hamhnLjIwMTQuMDguMDA0PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+TGksIFguIGV0IGFsLiBUcmFuc2NyaXB0b21lIHNlcXVlbmNpbmcgb2YgYSBsYXJnZSBodW1hbiBmYW1pbHkgaWRlbnRpZmllcyB0aGUgaW1wYWN0IG9mIHJhcmUgbm9uY29kaW5nIHZhcmlhbnRzLiBBbS4gSi4gSHVtLiBHZW5ldC4gOTUsIDI0NeKAkzI1NiAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I0MyI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlRyZW5kcyBHZW5ldC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+QVIgUXVpbmxhbjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI4PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQzPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMjwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDE2L2oudGlnLjIwMTEuMTAuMDAyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+UXVpbmxhbiwgQS5SLiAmYW1wOyBIYWxsLCBJLk0uIENoYXJhY3Rlcml6aW5nIGNvbXBsZXggc3RydWN0dXJhbCB2YXJpYXRpb24gaW4gZ2VybWxpbmUgYW5kIHNvbWF0aWMgZ2Vub21lcy4gVHJlbmRzIEdlbmV0LiAyOCwgNDPigJM1MyAoMjAxMikuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I0NCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdC4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPk0gS2lyY2hlcjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjQ2PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjMxMDwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTQ8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAzOC9uZy4yODkyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+S2lyY2hlciwgTS4gZXQgYWwuIEEgZ2VuZXJhbCBmcmFtZXdvcmsgZm9yIGVzdGltYXRpbmcgdGhlIHJlbGF0aXZlIHBhdGhvZ2VuaWNpdHkgb2YgaHVtYW4gZ2VuZXRpYyB2YXJpYW50cy4gTmF0LiBHZW5ldC4gNDYsIDMxMOKAkzMxNSAoMjAxNCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I0NSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA5My9iaW9pbmZvcm1hdGljcy9idHc3ODk8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5HYW5lbCwgTC4gJmFtcDsgQWJlbCwgSC5KLiBGaW5NZXRTZXEgQ29uc29ydGl1bSAmYW1wOyBIYWxsLCBJLk0uIFNWU2NvcmU6IGFuIGltcGFjdCBwcmVkaWN0aW9uIHRvb2wgZm9yIHN0cnVjdHVyYWwgdmFyaWF0aW9uLiBCaW9pbmZvcm1hdGljcyANCiAgICAgICAgICAgICAgICAgICAgaHR0cDovL2R4LmRvaS5vcmcvMTAuMTA5My9iaW9pbmZvcm1hdGljcy9idHc3ODkNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgKDIwMTYpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSNDYiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5IdW0uIE1vbC4gR2VuZXQuPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPk5KIENvb3BlcjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI0PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE3NzQ8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE1PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTMvaG1nL2RkdTU4MTwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkNvb3BlciwgTi5KLiBldCBhbC4gRGV0ZWN0aW9uIGFuZCBjb3JyZWN0aW9uIG9mIGFydGVmYWN0cyBpbiBlc3RpbWF0aW9uIG9mIHJhcmUgY29weSBudW1iZXIgdmFyaWFudHMgYW5kIGFuYWx5c2lzIG9mIHJhcmUgZGVsZXRpb25zIGluIHR5cGUgMSBkaWFiZXRlcy4gSHVtLiBNb2wuIEdlbmV0LiAyNCwgMTc3NOKAkzE3OTAgKDIwMTUpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSNDciPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5HZW5vbWUgUmVzLjwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5LIFdhbmc8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xNzwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xNjY1PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNzwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTAxL2dyLjY4NjE5MDc8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5XYW5nLCBLLiBldCBhbC4gUGVubkNOVjogYW4gaW50ZWdyYXRlZCBoaWRkZW4gTWFya292IG1vZGVsIGRlc2lnbmVkIGZvciBoaWdoLXJlc29sdXRpb24gY29weSBudW1iZXIgdmFyaWF0aW9uIGRldGVjdGlvbiBpbiB3aG9sZS1nZW5vbWUgU05QIGdlbm90eXBpbmcgZGF0YS4gR2Vub21lIFJlcy4gMTcsIDE2NjXigJMxNjc0ICgyMDA3KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjQ4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QmlvaW5mb3JtYXRpY3M8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+QyBUcmFwbmVsbDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI1PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjExMDU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA5PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTMvYmlvaW5mb3JtYXRpY3MvYnRwMTIwPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+VHJhcG5lbGwsIEMuLCBQYWNodGVyLCBMLiAmYW1wOyBTYWx6YmVyZywgUy5MLiBUb3BIYXQ6IGRpc2NvdmVyaW5nIHNwbGljZSBqdW5jdGlvbnMgd2l0aCBSTkEtU2VxLiBCaW9pbmZvcm1hdGljcyAyNSwgMTEwNeKAkzExMTEgKDIwMDkpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSNDkiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5HZW5vbWUgQmlvbC48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+SiBIYXJyb3c8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT43PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT5TdXBwbC4gMTwvaXNzdWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5IYXJyb3csIEouIGV0IGFsLiBHRU5DT0RFOiBwcm9kdWNpbmcgYSByZWZlcmVuY2UgYW5ub3RhdGlvbiBmb3IgRU5DT0RFLiBHZW5vbWUgQmlvbC4gNyAoU3VwcGwuIDEpLCAx4oCTOSAoMjAwNikuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I1MCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkJpb2luZm9ybWF0aWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkRTIERlTHVjYTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI4PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE1MzA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDEyPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTMvYmlvaW5mb3JtYXRpY3MvYnRzMTk2PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RGVMdWNhLCBELlMuIGV0IGFsLiBSTkEtU2VRQzogUk5BLXNlcSBtZXRyaWNzIGZvciBxdWFsaXR5IGNvbnRyb2wgYW5kIHByb2Nlc3Mgb3B0aW1pemF0aW9uLiBCaW9pbmZvcm1hdGljcyAyOCwgMTUzMOKAkzE1MzIgKDIwMTIpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IkJGbmczODM0X0NSNTEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwOTMvYmlvaW5mb3JtYXRpY3MvYnR2NzIyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+T25nZW4sIEguLCBCdWlsLCBBLiwgQnJvd24sIEEuLCBEZXJtaXR6YWtpcywgRS4gJmFtcDsgRGVsYW5lYXUsIE8uIEZhc3QgYW5kIGVmZmljaWVudCBRVEwgbWFwcGVyIGZvciB0aG91c2FuZHMgb2YgbW9sZWN1bGFyIHBoZW5vdHlwZXMuIEJpb2luZm9ybWF0aWNzIA0KICAgICAgICAgICAgICAgICAgICBodHRwOi8vZHguZG9pLm9yZy8xMC4xMDkzL2Jpb2luZm9ybWF0aWNzL2J0djcyMg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAoMjAxNikuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I1MiI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdC4gUHJvdG9jLjwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5PIFN0ZWdsZTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NTAwPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMjwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25wcm90LjIwMTEuNDU3PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+U3RlZ2xlLCBPLiwgUGFydHMsIEwuLCBQaWlwYXJpLCBNLiwgV2lubiwgSi4gJmFtcDsgRHVyYmluLCBSLiBVc2luZyBwcm9iYWJpbGlzdGljIGVzdGltYXRpb24gb2YgZXhwcmVzc2lvbiByZXNpZHVhbHMgKFBFRVIpIHRvIG9idGFpbiBpbmNyZWFzZWQgcG93ZXIgYW5kIGludGVycHJldGFiaWxpdHkgb2YgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2VzLiBOYXQuIFByb3RvYy4gNywgNTAw4oCTNTA3ICgyMDEyKS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjUzIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QmlvaW5mb3JtYXRpY3M8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+QVIgUXVpbmxhbjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI2PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjg0MTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTA8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTA5My9iaW9pbmZvcm1hdGljcy9idHEwMzM8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5RdWlubGFuLCBBLlIuICZhbXA7IEhhbGwsIEkuTS4gQkVEVG9vbHM6IGEgZmxleGlibGUgc3VpdGUgb2YgdXRpbGl0aWVzIGZvciBjb21wYXJpbmcgZ2Vub21pYyBmZWF0dXJlcy4gQmlvaW5mb3JtYXRpY3MgMjYsIDg0MeKAkzg0MiAoMjAxMCkuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iQkZuZzM4MzRfQ1I1NCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdHVyZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5KVyBIbzwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjUxMjwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40NDk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmF0dXJlMTM0MTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5IbywgSi5XLiBldCBhbC4gQ29tcGFyYXRpdmUgYW5hbHlzaXMgb2YgbWV0YXpvYW4gY2hyb21hdGluIG9yZ2FuaXphdGlvbi4gTmF0dXJlIDUxMiwgNDQ54oCTNDUyICgyMDE0KS48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJCRm5nMzgzNF9DUjU1Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+R2Vub21lIFJlcy48L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+V0ogS2VudDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjEyPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjk5NjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDI8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTEwMS9nci4yMjkxMDI8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5LZW50LCBXLkouIGV0IGFsLiBUaGUgaHVtYW4gZ2Vub21lIGJyb3dzZXIgYXQgVUNTQy4gR2Vub21lIFJlcy4gMTIsIDk5NuKAkzEwMDYgKDIwMDIpLjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uX2xpc3Q+DQogICAgICAgICAgICAgIDwvam91cm5hbF9hcnRpY2xlPg0KICAgICAgICAgICAgPC9qb3VybmFsPg0KICAgICAgICAgIDwvY3Jvc3NyZWY+DQogICAgICAgIDwvZG9pX3JlY29yZD4NCiAgICAgIDwvcXVlcnk+DQogICAgPC9ib2R5Pg0KICA8L3F1ZXJ5X3Jlc3VsdD4NCjwvY3Jvc3NyZWZfcmVzdWx0Pg==
|
97
|
+
http_version:
|
98
|
+
recorded_at: Fri, 07 Feb 2020 21:53:16 GMT
|
99
|
+
recorded_with: VCR 3.0.3
|
data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_crossrer_organization.yml
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.crossref.org/works/10.1101/097196/transform/application/vnd.crossref.unixsd+xml
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Mozilla/5.0 (compatible; Maremma/4.5; mailto:info@datacite.org)
|
12
|
+
Accept:
|
13
|
+
- text/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
Link:
|
20
|
+
- !binary |-
|
21
|
+
PGh0dHA6Ly9keC5kb2kub3JnLzEwLjExMDEvMDk3MTk2PjsgcmVsPSJjYW5vbmljYWwiLCA8aHR0cHM6Ly9zeW5kaWNhdGlvbi5oaWdod2lyZS5vcmcvY29udGVudC9kb2kvMTAuMTEwMS8wOTcxOTY+OyB2ZXJzaW9uPSJ2b3IiOyByZWw9Iml0ZW0iLCA8aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDMtMTQxOS0yNDA1PjsgdGl0bGU9Ik1hcnRpbiBGZW5uZXIiOyByZWw9ImF1dGhvciIsIDxodHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0xMzA0LTE5Mzk+OyB0aXRsZT0iTWVyY8OoIENyb3NhcyI7IHJlbD0iYXV0aG9yIiwgPGh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTUyMTItNzA1Mj47IHRpdGxlPSJKZWZmcmV5IEdyZXRoZSI7IHJlbD0iYXV0aG9yIiwgPGh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTkzNzctMDc5Nz47IHRpdGxlPSJEYXZpZCBLZW5uZWR5IjsgcmVsPSJhdXRob3IiLCA8aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtODQ3OS0wMjYyPjsgdGl0bGU9Ikhlbm5pbmcgSGVybWpha29iIjsgcmVsPSJhdXRob3IiLCA8aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtOTg1My01NjY4PjsgdGl0bGU9IlBoaWxpcHBlIFJvY2NhLVNlcnJhIjsgcmVsPSJhdXRob3IiLCA8aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMjE4OC0yNTcwPjsgdGl0bGU9Ikd1c3Rhdm8gRHVyYW5kIjsgcmVsPSJhdXRob3IiLCA8aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMTczMS01MzQ2PjsgdGl0bGU9IlJvYmluIEJlcmpvbiI7IHJlbD0iYXV0aG9yIiwgPGh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTgyNDktNzM4OD47IHRpdGxlPSJTZWJhc3RpYW4gS2FyY2hlciI7IHJlbD0iYXV0aG9yIiwgPGh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTg0MDYtMzg3MT47IHRpdGxlPSJNYXJ5YW5uIE1hcnRvbmUiOyByZWw9ImF1dGhvciIsIDxodHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy00MDYwLTczNjA+OyB0aXRsZT0iVGltb3RoeSBDbGFyayI7IHJlbD0iYXV0aG9yIg==
|
22
|
+
Access-Control-Allow-Origin:
|
23
|
+
- "*"
|
24
|
+
Access-Control-Allow-Headers:
|
25
|
+
- X-Requested-With
|
26
|
+
Content-Length:
|
27
|
+
- '16202'
|
28
|
+
Server:
|
29
|
+
- http-kit
|
30
|
+
Date:
|
31
|
+
- Fri, 07 Feb 2020 22:40:43 GMT
|
32
|
+
X-Rate-Limit-Limit:
|
33
|
+
- '50'
|
34
|
+
X-Rate-Limit-Interval:
|
35
|
+
- 1s
|
36
|
+
Connection:
|
37
|
+
- close
|
38
|
+
body:
|
39
|
+
encoding: ASCII-8BIT
|
40
|
+
string: !binary |-
|
41
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0icG9zdGVkX2NvbnRlbnQiPjEwLjExMDEvMDk3MTk2PC9kb2k+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwdWJsaXNoZXItbmFtZSIgdHlwZT0ic3RyaW5nIj5Db2xkIFNwcmluZyBIYXJib3IgTGFib3JhdG9yeTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwcmVmaXgtbmFtZSIgdHlwZT0ic3RyaW5nIj5Db2xkIFNwcmluZyBIYXJib3IgTGFib3JhdG9yeTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJtZW1iZXItaWQiIHR5cGU9Im51bWJlciI+MjQ2PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNpdGF0aW9uLWlkIiB0eXBlPSJudW1iZXIiPjg3MTA4NDg0PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImJvb2staWQiIHR5cGU9Im51bWJlciI+MjIyMTgxNDwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJkZXBvc2l0LXRpbWVzdGFtcCIgdHlwZT0ibnVtYmVyIj4yMDE5MDcxNjEzMzgxMjg0MDAwPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im93bmVyLXByZWZpeCIgdHlwZT0ic3RyaW5nIj4xMC4xMTAxPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Imxhc3QtdXBkYXRlIiB0eXBlPSJkYXRlIj4yMDIwLTAxLTE4VDAyOjUzOjU3WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjcmVhdGVkIiB0eXBlPSJkYXRlIj4yMDE2LTEyLTI5VDA2OjEwOjE1WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRlZGJ5LWNvdW50IiB0eXBlPSJudW1iZXIiPjEyPC9jcm0taXRlbT4NCiAgICAgICAgPGRvaV9yZWNvcmQ+DQogICAgICAgICAgPGNyb3NzcmVmIHhtbG5zPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSBodHRwOi8vZG9pLmNyb3NzcmVmLm9yZy9zY2hlbWFzL3VuaXhyZWYxLjEueHNkIj4NCiAgICAgICAgICAgIDxwb3N0ZWRfY29udGVudCB0eXBlPSJwcmVwcmludCIgbGFuZ3VhZ2U9ImVuIiBtZXRhZGF0YV9kaXN0cmlidXRpb25fb3B0cz0iYW55Ij4NCiAgICAgICAgICAgICAgPGdyb3VwX3RpdGxlPlNjaWVudGlmaWMgQ29tbXVuaWNhdGlvbiBhbmQgRWR1Y2F0aW9uPC9ncm91cF90aXRsZT4NCiAgICAgICAgICAgICAgPGNvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iZmlyc3QiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+TWFydGluPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+RmVubmVyPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTE0MTktMjQwNTwvT1JDSUQ+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NZXJjw6g8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5Dcm9zYXM8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDMtMTMwNC0xOTM5PC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkplZmZyZXk8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5HcmV0aGU8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtNTIxMi03MDUyPC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkRhdmlkPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+S2VubmVkeTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi05Mzc3LTA3OTc8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+SGVubmluZzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkhlcm1qYWtvYjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMS04NDc5LTAyNjI8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+UGhpbGlwcGU8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5Sb2NjYS1TZXJyYTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMS05ODUzLTU2Njg8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+R3VzdGF2bzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkR1cmFuZDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi0yMTg4LTI1NzA8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+Um9iaW48L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5CZXJqb248L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMTczMS01MzQ2PC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlNlYmFzdGlhbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkthcmNoZXI8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDEtODI0OS03Mzg4PC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk1hcnlhbm48L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5NYXJ0b25lPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTg0MDYtMzg3MTwvT1JDSUQ+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5UaW1vdGh5PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+Q2xhcms8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8T1JDSUQ+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDMtNDA2MC03MzYwPC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICA8L2NvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgPHRpdGxlcz4NCiAgICAgICAgICAgICAgICA8dGl0bGU+QSBEYXRhIENpdGF0aW9uIFJvYWRtYXAgZm9yIFNjaG9sYXJseSBEYXRhIFJlcG9zaXRvcmllczwvdGl0bGU+DQogICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICA8cG9zdGVkX2RhdGU+DQogICAgICAgICAgICAgICAgPG1vbnRoPjEyPC9tb250aD4NCiAgICAgICAgICAgICAgICA8ZGF5PjI4PC9kYXk+DQogICAgICAgICAgICAgICAgPHllYXI+MjAxNjwveWVhcj4NCiAgICAgICAgICAgICAgPC9wb3N0ZWRfZGF0ZT4NCiAgICAgICAgICAgICAgPGFjY2VwdGFuY2VfZGF0ZT4NCiAgICAgICAgICAgICAgICA8bW9udGg+MTA8L21vbnRoPg0KICAgICAgICAgICAgICAgIDxkYXk+MDk8L2RheT4NCiAgICAgICAgICAgICAgICA8eWVhcj4yMDE3PC95ZWFyPg0KICAgICAgICAgICAgICA8L2FjY2VwdGFuY2VfZGF0ZT4NCiAgICAgICAgICAgICAgPGluc3RpdHV0aW9uPg0KICAgICAgICAgICAgICAgIDxpbnN0aXR1dGlvbl9uYW1lPmJpb1J4aXY8L2luc3RpdHV0aW9uX25hbWU+DQogICAgICAgICAgICAgIDwvaW5zdGl0dXRpb24+DQogICAgICAgICAgICAgIDxpdGVtX251bWJlciBpdGVtX251bWJlcl90eXBlPSJwaXNhIj5iaW9yeGl2OzA5NzE5NnYyPC9pdGVtX251bWJlcj4NCiAgICAgICAgICAgICAgPGphdHM6YWJzdHJhY3QgeG1sbnM6amF0cz0iaHR0cDovL3d3dy5uY2JpLm5sbS5uaWguZ292L0pBVFMxIj4NCiAgICAgICAgICAgICAgICA8amF0czp0aXRsZT5BYnN0cmFjdDwvamF0czp0aXRsZT4NCiAgICAgICAgICAgICAgICA8amF0czpwPg0KICAgICAgICAgICAgICAgICAgVGhpcyBhcnRpY2xlIHByZXNlbnRzIGEgcHJhY3RpY2FsIHJvYWRtYXAgZm9yIHNjaG9sYXJseSBkYXRhIHJlcG9zaXRvcmllcyB0byBpbXBsZW1lbnQgZGF0YSBjaXRhdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIEpvaW50IERlY2xhcmF0aW9uIG9mIERhdGEgQ2l0YXRpb24gUHJpbmNpcGxlcywgYSBzeW5vcHNpcyBhbmQgaGFybW9uaXphdGlvbiBvZiB0aGUgcmVjb21tZW5kYXRpb25zIG9mIG1ham9yIHNjaWVuY2UgcG9saWN5IGJvZGllcy4gVGhlIHJvYWRtYXAgd2FzIGRldmVsb3BlZCBieSB0aGUgUmVwb3NpdG9yaWVzIEV4cGVydCBHcm91cCwgYXMgcGFydCBvZiB0aGUgRGF0YSBDaXRhdGlvbiBJbXBsZW1lbnRhdGlvbiBQaWxvdCAoRENJUCkgcHJvamVjdCwgYW4gaW5pdGlhdGl2ZSBvZiBGT1JDRTExLm9yZyBhbmQgdGhlIE5JSCBCaW9DQURESUUgKA0KICAgICAgICAgICAgICAgICAgPGphdHM6ZXh0LWxpbmsgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGV4dC1saW5rLXR5cGU9InVyaSIgeGxpbms6aHJlZj0iaHR0cHM6Ly9iaW9jYWRkaWUub3JnIj5odHRwczovL2Jpb2NhZGRpZS5vcmc8L2phdHM6ZXh0LWxpbms+DQogICAgICAgICAgICAgICAgICApIHByb2dyYW0uIFRoZSByb2FkbWFwIG1ha2VzIDExIHNwZWNpZmljIHJlY29tbWVuZGF0aW9ucywgZ3JvdXBlZCBpbnRvIHRocmVlIHBoYXNlcyBvZiBpbXBsZW1lbnRhdGlvbjogYSkgcmVxdWlyZWQgc3RlcHMgbmVlZGVkIHRvIHN1cHBvcnQgdGhlIEpvaW50IERlY2xhcmF0aW9uIG9mIERhdGEgQ2l0YXRpb24gUHJpbmNpcGxlcywgYikgcmVjb21tZW5kZWQgc3RlcHMgdGhhdCBmYWNpbGl0YXRlIGFydGljbGUvZGF0YSBwdWJsaWNhdGlvbiB3b3JrZmxvd3MsIGFuZCBjKSBvcHRpb25hbCBzdGVwcyB0aGF0IGZ1cnRoZXIgaW1wcm92ZSBkYXRhIGNpdGF0aW9uIHN1cHBvcnQgcHJvdmlkZWQgYnkgZGF0YSByZXBvc2l0b3JpZXMuDQogICAgICAgICAgICAgICAgPC9qYXRzOnA+DQogICAgICAgICAgICAgIDwvamF0czphYnN0cmFjdD4NCiAgICAgICAgICAgICAgPHByb2dyYW0geG1sbnM9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3JlbGF0aW9ucy54c2QiPg0KICAgICAgICAgICAgICAgIDxyZWxhdGVkX2l0ZW0+DQogICAgICAgICAgICAgICAgICA8aW50cmFfd29ya19yZWxhdGlvbiByZWxhdGlvbnNoaXAtdHlwZT0iaXNQcmVwcmludE9mIiBpZGVudGlmaWVyLXR5cGU9ImRvaSI+MTAuMTAzOC9zNDE1OTctMDE5LTAwMzEtODwvaW50cmFfd29ya19yZWxhdGlvbj4NCiAgICAgICAgICAgICAgICA8L3JlbGF0ZWRfaXRlbT4NCiAgICAgICAgICAgICAgPC9wcm9ncmFtPg0KICAgICAgICAgICAgICA8ZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAxLzA5NzE5NjwvZG9pPg0KICAgICAgICAgICAgICAgIDx0aW1lc3RhbXA+MjAxOTA3MTYxMzM4MTI4NDAwMDwvdGltZXN0YW1wPg0KICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vYmlvcnhpdi5vcmcvbG9va3VwL2RvaS8xMC4xMTAxLzA5NzE5NjwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgPGNvbGxlY3Rpb24gcHJvcGVydHk9ImNyYXdsZXItYmFzZWQiPg0KICAgICAgICAgICAgICAgICAgPGl0ZW0gY3Jhd2xlcj0iaVBhcmFkaWdtcyI+DQogICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwczovL3N5bmRpY2F0aW9uLmhpZ2h3aXJlLm9yZy9jb250ZW50L2RvaS8xMC4xMTAxLzA5NzE5NjwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgPC9jb2xsZWN0aW9uPg0KICAgICAgICAgICAgICA8L2RvaV9kYXRhPg0KICAgICAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjEiPg0KICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QnVsbGV0aW4gb2YgdGhlIEFtZXJpY2FuIFxsZG90czwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDE8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgIDxpc3N1ZT4zPC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQzPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTU8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+QW4gaW50cm9kdWN0aW9uIHRvIHRoZSBqb2ludCBwcmluY2lwbGVzIGZvciBkYXRhIGNpdGF0aW9uPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4yIj4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+QWx0bWFuLCBNLiAsICZhbXA7IENyb3NhcywgTS4gKDIwMTMpLiBUaGUgRXZvbHV0aW9uIG9mIERhdGEgQ2l0YXRpb246IEZyb20gUHJpbmNpcGxlcyB0byBJbXBsZW1lbnRhdGlvbi4gSUFTU0lTVCBRdWFydGVybHkuIFJldHJpZXZlZCBmcm9tIGh0dHA6Ly9zY2hvbGFyLmhhcnZhcmQuZWR1L21lcmNlY3Jvc2FzL3B1YmxpY2F0aW9ucy9ldm9sdXRpb24tZGF0YS1jaXRhdGlvbi1wcmluY2lwbGVzLWltcGxlbWVudGF0aW9uPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjMiPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5CaW9TY2hlbWFzLiAoMjAxNikuIFJldHJpZXZlZCBEZWNlbWJlciAyMiwgMjAxNiwgZnJvbSBodHRwOi8vYmlvc2NoZW1hcy5vcmcvPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjQiPg0KICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjI0ODEvZHNqLk9TT00xMy0wNDM8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+Q09EQVRBLUlDU1RJIFRhc2sgR3JvdXAgb24gRGF0YSBDaXRhdGlvbiBTdGFuZGFyZHMgYW5kIFByYWN0aWNlLiAoMjAxMykuIE91dCBvZiBDaXRlLCBPdXQgb2YgTWluZDogVGhlIEN1cnJlbnQgU3RhdGUgb2YgUHJhY3RpY2UsIFBvbGljeSwgYW5kIFRlY2hub2xvZ3kgZm9yIHRoZSBDaXRhdGlvbiBvZiBEYXRhLiBEYXRhIFNjaWVuY2UgSm91cm5hbCwgMTIoMCkuIGh0dHBzOi8vZG9pLm9yZy8xMC4yNDgxL2Rzai5PU09NMTMtMDQzPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjUiPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5EYXRhIENpdGF0aW9uIFN5bnRoZXNpcyBHcm91cC4gKDIwMTQpLiBEYXRhIENpdGF0aW9uIFN5bnRoZXNpcyBHcm91cC4gKDIwMTQpLiBKb2ludCBEZWNsYXJhdGlvbiBvZiBEYXRhIENpdGF0aW9uIFByaW5jaXBsZXMuIEZvcmNlMTEuIGh0dHBzOi8vZG9pLm9yZy8xMC4yNTQ5MC9hOTdmLWVneWs8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuNiI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkRhdGEgQ2l0YXRpb25zOiBBIFByaW1lci4gKDIwMTYpLiBSZXRyaWV2ZWQgRGVjZW1iZXIgMjIsIDIwMTYsIGZyb20gaHR0cDovL2ZvcmNlMTEuZ2l0aHViLmlvL2RhdGEtY2l0YXRpb24tcHJpbWVyLzwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi43Ij4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RGF0YUNpdGUgTWV0YWRhdGEgV29ya2luZy4gKDIwMTYpLiBEYXRhQ2l0ZSBNZXRhZGF0YSBTY2hlbWEgZm9yIHRoZSBQdWJsaWNhdGlvbiBhbmQgQ2l0YXRpb24gb2YgUmVzZWFyY2ggRGF0YSB2NC4wLiBEYXRhQ2l0ZS4gUmV0cmlldmVkIGZyb20gaHR0cDovL3NlYXJjaC5kYXRhY2l0ZS5vcmcvd29ya3MvMTAuNTQzOC8wMDEzPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjgiPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5EYXRhQ2l0ZSBTZWFyY2guICgyMDE2KS4gUmV0cmlldmVkIERlY2VtYmVyIDIyLCAyMDE2LCBmcm9tIGh0dHBzOi8vc2VhcmNoLmRhdGFjaXRlLm9yZy88L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuOSI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkRhdGFNZWQgfCBiaW9DQURESUUgRERJLiAoMjAxNikuIFJldHJpZXZlZCBEZWNlbWJlciAyMiwgMjAxNiwgZnJvbSBodHRwczovL2RhdGFtZWQub3JnLzwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4xMCI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkRhdGFzZXQgLSBzY2hlbWEub3JnLiAoMjAxNikuIFJldHJpZXZlZCBEZWNlbWJlciAxMiwgMjAxNiwgZnJvbSBodHRwczovL3NjaGVtYS5vcmcvRGF0YXNldDwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4xMSI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkR1YmxpbiBDb3JlIE1ldGFkYXRhIEVsZW1lbnQgU2V0LCBWZXJzaW9uIDEuMS4gKDIwMTIpLiBSZXRyaWV2ZWQgRGVjZW1iZXIgMjIsIDIwMTYsIGZyb20gaHR0cDovL2R1YmxpbmNvcmUub3JnL2RvY3VtZW50cy8yMDEyLzA2LzE0L2RjZXMvPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjEyIj4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RUxJWElSIERhdGEgZm9yIGxpZmUuICgyMDE2KS4gUmV0cmlldmVkIERlY2VtYmVyIDIyLCAyMDE2LCBmcm9tIGh0dHBzOi8vd3d3LmVsaXhpci1ldXJvcGUub3JnLzwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4xMyI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkhhbW1vbmQsIFQuICwgSGFubmF5LCBULiAsICZhbXA7IEx1bmQsIEIuICgyMDA0KS4gUkRGIFNpdGUgU3VtbWFyeSAxLjAgTW9kdWxlczogUFJJU00uPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjE0Ij4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+UHVibGlzaGluZyBSZXF1aXJlbWVudHMgZm9yIEluZHVzdHJ5IFN0YW5kYXJkIE1ldGFkYXRhIChQUklTTSkuIFJldHJpZXZlZCBmcm9tIGh0dHA6Ly9wdXJsLm9yZy9yc3MvMS4wL21vZHVsZXMvcHJpc20vPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjE1Ij4NCiAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4zMzg5L2ZuaW5mLjIwMTYuMDAwMzQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+SG9ub3IsIEwuIEIuICwgSGFzZWxncm92ZSwgQy4gLCBGcmF6aWVyLCBKLiBBLiAsICZhbXA7IEtlbm5lZHksIEQuIE4uICgyMDE2KS4gRGF0YSBDaXRhdGlvbiBpbiBOZXVyb2ltYWdpbmc6IFByb3Bvc2VkIEJlc3QgUHJhY3RpY2VzIGZvciBEYXRhIElkZW50aWZpY2F0aW9uIGFuZCBBdHRyaWJ1dGlvbi4gRnJvbnRpZXJzIGluIE5ldXJvaW5mb3JtYXRpY3MsIDEwLiBodHRwczovL2RvaS5vcmcvMTAuMzM4OS9mbmluZi4yMDE2LjAwMDM0PC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjE2Ij4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+S2luZywgR2FyeSAsICZhbXA7IEFsdG1hbiwgTWljYWggLiAoMjAwNykuIEEgUHJvcG9zZWQgU3RhbmRhcmQgZm9yIHRoZSBTY2hvbGFybHkgQ2l0YXRpb24gb2YgUXVhbnRpdGF0aXZlIERhdGEuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDQ1L21hcmNoMjAwNy1hbHRtYW48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMTciPg0KICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xNTI1Mi9tc2IuMjAxNTY2NTg8L2RvaT4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMTgiPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5QcmVmaXggQ29tbW9ucy4gKDIwMTYpLiBSZXRyaWV2ZWQgRGVjZW1iZXIgMjIsIDIwMTYsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ByZWZpeGNvbW1vbnMvcHJlZml4ZXM8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMTkiPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5SRkMgMzk4NiAtIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKTogR2VuZXJpYyBTeW50YXguICgyMDA1KS4gUmV0cmlldmVkIERlY2VtYmVyIDIyLCAyMDE2LCBmcm9tIGh0dHA6Ly93d3cucmZjLWJhc2Uub3JnL3JmYy0zOTg2Lmh0bWw8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMjAiPg0KICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvc2RhdGEuMjAxNy41OTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TYW5zb25lLCBBLiAsIEdvbnphbGV6LUJlbHRyYW4sIEEuICwgJmFtcDsgUm9jY2EtU2VycmEsIFAuICgyMDE2KS4gREFUUywgdGhlIGRhdGEgdGFnIHN1aXRlIHRvIGVuYWJsZSBkaXNjb3ZlcmFiaWxpdHkgb2YgZGF0YXNldHMuIFNjaWVudGlmaWMgRGF0YSA0LCBBcnRpY2xlIG51bWJlcjogMTcwMDU5ICgyMDE3KSBodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zZGF0YS4yMDE3LjU5PC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjIxIj4NCiAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlBlZXJKIENvbXB1dGVyIFNjaWVuY2U8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICA8dm9sdW1lPjI8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPmU4NjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC43NzE3L3BlZXJqLWNzLjg2PC9kb2k+DQogICAgICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5Tb2Z0d2FyZSBjaXRhdGlvbiBwcmluY2lwbGVzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4yMiI+DQogICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QZWVySiBDb21wdXRlciBTY2llbmNlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT5lMTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDE1PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC43NzE3L3BlZXJqLWNzLjE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkFjaGlldmluZyBodW1hbiBhbmQgbWFjaGluZSBhY2Nlc3NpYmlsaXR5IG9mIGNpdGVkIGRhdGEgaW4gc2Nob2xhcmx5IHB1YmxpY2F0aW9uczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMjMiPg0KICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTI2L3NjaWVuY2UuYWFoNjE2ODwvZG9pPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMjAxOTA3MTYxMzM4MTI4NDAwMF8wOTcxOTZ2Mi4yNCI+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlRyZWxvYXIsIEEuICgyMDExKS4gRGVuIEhhYWcgUGVyc2lzdGVudCBPYmplY3QgSWRlbnRpZmllciDigJMgTGlua2VkIE9wZW4gRGF0YSBNYW5pZmVzdG8uIFplbm9kby4gaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjU1NjY2PC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIyMDE5MDcxNjEzMzgxMjg0MDAwXzA5NzE5NnYyLjI1Ij4NCiAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+VWhsaXIsIFAuIEUuIChFZC4pLiAoMjAxMikuIEZvciBBdHRyaWJ1dGlvbjogRGV2ZWxvcGluZyBEYXRhIEF0dHJpYnV0aW9uIGFuZCBDaXRhdGlvbiBQcmFjdGljZXMgYW5kIFN0YW5kYXJkczogU3VtbWFyeSBvZiBhbiBJbnRlcm5hdGlvbmFsIFdvcmtzaG9wLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL3d3dy5uYXAuZWR1L2NhdGFsb2cvMTM1NjQvZm9yLWF0dHJpYnV0aW9uLWRldmVsb3BpbmctZGF0YS1hdHRyaWJ1dGlvbi1hbmQtY2l0YXRpb24tcHJhY3RpY2VzLWFuZC1zdGFuZGFyZHM8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjIwMTkwNzE2MTMzODEyODQwMDBfMDk3MTk2djIuMjYiPg0KICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwNDUvbm92ZW1iZXIyMDE1LXZhbmRlc29tcGVsPC9kb2k+DQogICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlZhbiBkZSBTb21wZWwsIEguICwgJmFtcDsgTmVsc29uLCBNLiBMLiAoMjAxNSkuIFJlbWluaXNjaW5nIEFib3V0IDE1IFllYXJzIG9mIEludGVyb3BlcmFiaWxpdHkgRWZmb3J0cy4gRC1MaWIgTWFnYXppbmUsIDIxKDExLzEyKS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwNDUvbm92ZW1iZXIyMDE1LXZhbmRlc29tcGVsPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgPC9jaXRhdGlvbl9saXN0Pg0KICAgICAgICAgICAgPC9wb3N0ZWRfY29udGVudD4NCiAgICAgICAgICA8L2Nyb3NzcmVmPg0KICAgICAgICA8L2RvaV9yZWNvcmQ+DQogICAgICA8L3F1ZXJ5Pg0KICAgIDwvYm9keT4NCiAgPC9xdWVyeV9yZXN1bHQ+DQo8L2Nyb3NzcmVmX3Jlc3VsdD4=
|
42
|
+
http_version:
|
43
|
+
recorded_at: Fri, 07 Feb 2020 22:40:44 GMT
|
44
|
+
recorded_with: VCR 3.0.3
|
@@ -344,7 +344,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
344
344
|
expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.3390/publications6020015", "identifierType"=>"DOI"}])
|
345
345
|
expect(subject.url).to eq("http://www.mdpi.com/2304-6775/6/2/15")
|
346
346
|
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
347
|
-
expect(subject.creators).to eq("name"=>"
|
347
|
+
expect(subject.creators).to eq([{"name"=>"Alexander Kohls", "nameType"=>"Organizational"}, {"name"=>"Salvatore Mele", "nameType"=>"Organizational"}])
|
348
348
|
expect(subject.titles).to eq([{"title"=>"Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics"}])
|
349
349
|
expect(subject.dates).to eq([{"date"=>"2018-04-09", "dateType"=>"Issued"}, {"date"=>"2018-04-10T17:58:05Z", "dateType"=>"Updated"}])
|
350
350
|
expect(subject.publication_year).to eq("2018")
|
@@ -375,7 +375,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
375
375
|
expect(subject.url).to eq("http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM")
|
376
376
|
expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
|
377
377
|
expect(subject.creators).to eq("name"=>":(unav)", "nameType"=>"Organizational")
|
378
|
-
expect(subject.contributors.size).to eq(
|
378
|
+
expect(subject.contributors.size).to eq(4)
|
379
379
|
expect(subject.contributors.first).to eq("contributorType"=>"Editor", "familyName"=>"Taylor", "givenName"=>"B.", "name"=>"Taylor, B.", "nameType"=>"Personal")
|
380
380
|
expect(subject.titles).to eq([{"title"=>"Proceedings of the Ocean Drilling Program, 180 Initial Reports"}])
|
381
381
|
expect(subject.dates).to eq([{"date"=>"2000-02-04", "dateType"=>"Issued"}, {"date"=>"2009-02-02T21:19:43Z", "dateType"=>"Updated"}])
|
@@ -456,7 +456,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
456
456
|
expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.2903/j.efsa.2018.5239", "identifierType"=>"DOI"}])
|
457
457
|
expect(subject.url).to eq("http://doi.wiley.com/10.2903/j.efsa.2018.5239")
|
458
458
|
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
459
|
-
expect(subject.creators.length).to eq(
|
459
|
+
expect(subject.creators.length).to eq(28)
|
460
460
|
expect(subject.creators.first).to eq("familyName"=>"Younes", "givenName"=>"Maged", "name"=>"Younes, Maged", "nameType"=>"Personal")
|
461
461
|
expect(subject.titles).to eq([{"title"=>"Scientific opinion on the safety of green tea catechins"}])
|
462
462
|
expect(subject.dates).to eq([{"date"=>"2018-04", "dateType"=>"Issued"}, {"date"=>"2018-12-17T09:30:09Z", "dateType"=>"Updated"}])
|
@@ -517,6 +517,22 @@ describe Bolognese::Metadata, vcr: true do
|
|
517
517
|
expect(subject.agency).to eq("Crossref")
|
518
518
|
end
|
519
519
|
|
520
|
+
it "author literal" do
|
521
|
+
input = "https://doi.org/10.1038/ng.3834"
|
522
|
+
subject = Bolognese::Metadata.new(input: input)
|
523
|
+
expect(subject.valid?).to be true
|
524
|
+
expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.1038/ng.3834", "identifierType"=>"DOI"}])
|
525
|
+
expect(subject.url).to eq("http://www.nature.com/articles/ng.3834")
|
526
|
+
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
527
|
+
expect(subject.creators.length).to eq(14)
|
528
|
+
expect(subject.creators.last).to eq("name"=>"GTEx Consortium", "nameType"=>"Organizational")
|
529
|
+
expect(subject.titles).to eq([{"title"=>"The impact of structural variation on human gene expression"}])
|
530
|
+
expect(subject.dates).to eq([{"date"=>"2017-04-03", "dateType"=>"Issued"}, {"date"=>"2019-11-02T08:50:05Z", "dateType"=>"Updated"}])
|
531
|
+
expect(subject.publication_year).to eq("2017")
|
532
|
+
expect(subject.publisher).to eq("Springer Science and Business Media LLC")
|
533
|
+
expect(subject.agency).to eq("Crossref")
|
534
|
+
end
|
535
|
+
|
520
536
|
it "journal issue" do
|
521
537
|
input = "https://doi.org/10.6002/ect.2015.0371"
|
522
538
|
subject = Bolognese::Metadata.new(input: input)
|
@@ -30,8 +30,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
30
30
|
it "Missing author" do
|
31
31
|
input = "https://doi.org/10.3390/publications6020015"
|
32
32
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
33
|
-
|
34
|
-
expect(subject.citation).to eq("Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics. (2018). <i>Publications</i>, <i>6</i>(2), 15. https://doi.org/10.3390/publications6020015")
|
33
|
+
expect(subject.citation).to eq("Alexander Kohls, & Salvatore Mele. (2018). Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics. <i>Publications</i>, <i>6</i>(2), 15. https://doi.org/10.3390/publications6020015")
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
@@ -150,7 +150,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
150
150
|
expect(json["id"]).to eq("https://doi.org/10.3390/publications6020015")
|
151
151
|
expect(json["DOI"]).to eq("10.3390/publications6020015")
|
152
152
|
expect(json["title"]).to eq("Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics")
|
153
|
-
expect(json["author"]).to
|
153
|
+
expect(json["author"]).to eq([{"literal"=>"Alexander Kohls"}, {"literal"=>"Salvatore Mele"}])
|
154
154
|
expect(json["container-title"]).to eq("Publications")
|
155
155
|
expect(json["publisher"]).to eq("MDPI AG")
|
156
156
|
expect(json["page"]).to eq("15")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bolognese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: maremma
|
@@ -902,6 +902,7 @@ files:
|
|
902
902
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/OP.yml
|
903
903
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book.yml
|
904
904
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book_chapter.yml
|
905
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml
|
905
906
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book.yml
|
906
907
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter.yml
|
907
908
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter_with_RDF_for_container.yml
|
@@ -971,6 +972,7 @@ files:
|
|
971
972
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_display-order_with_ORCID.yml
|
972
973
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_sort-order.yml
|
973
974
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/hyper-authorship.yml
|
975
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_crossrer_organization.yml
|
974
976
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_organization.yml
|
975
977
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/multiple_author_names_in_one_field.yml
|
976
978
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/multiple_name_identifier.yml
|