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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 228903b64465ba1351f4856c7137f9a801c619d05412cd125795f69404a2debe
4
- data.tar.gz: 88b6b30d92f41133f5d1a18ac656891fce74b00867f82f7a055ef90e01c6b6db
3
+ metadata.gz: 993319240a884529dde79a04d3daad8ff836a0dee55e5789fbd9bf6b4eaa3aec
4
+ data.tar.gz: '0638690ce54e4a77fcb5d8290bf48bc06c295bfe2f9e51b9c69da11641001739'
5
5
  SHA512:
6
- metadata.gz: 40039c3403e1f6fae2aea53913b98ad8e5c8a68a75116c11fd62a86728d1f5151c6a5ae6223dabeea95464baf778ca4ae56138ae583fa43d90a9320a47748e06
7
- data.tar.gz: f2da6c0392eefe64d4c4a2e9af3cb49ff376a4df5566014e57ba69245fff37d6ac92419172f49c38e4af6b22ea27c72caf99287f95a0b76138f2a6bad40d860f
6
+ metadata.gz: b41be204154b878723f19e07f7cc150e540ee5ca24cfed0e0948ecb486045e816e59c643636dc4627348236946a89d553dc3b239fad531d94e5188f792e39507
7
+ data.tar.gz: 84f1a2bedbe0e4847d6e23d4fb44bc96d71f1d4ed287999e94b96a16e6f93f30ed78ce9e7dac0ee77a0aa953bccfe94e7e85563162956b012ba4017bd7412837
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (1.4.2)
4
+ bolognese (1.4.3)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -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
- person = [{ "name" => ":(unav)", "contributor_role"=>"author" }] if contributor_role == "author" && Array.wrap(person).select { |a| a["contributor_role"] == "author" }.blank?
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)
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.4.2"
2
+ VERSION = "1.4.3"
3
3
  end
@@ -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
@@ -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"=>":(unav)", "nameType"=>"Organizational")
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(3)
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(27)
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, &amp; 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 be_nil
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.2
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-07 00:00:00.000000000 Z
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