bolognese 1.8.12 → 1.8.13

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: 8e9ef883158d4d5c7759604384e40187b696797da54ef3746110dae68ae4172e
4
- data.tar.gz: 6df03fa50cdb1902b55e371c5fd32293d5c33b842c9a3ba90b12e78554c8e53b
3
+ metadata.gz: ea0a1d41de990f8bc6e940f8df5c3734b8751b262306273084e770bfe0834ddb
4
+ data.tar.gz: a3bbc207e08285915c00db8c1294a09ebc0c3bc2f6a13a996a76a6b2e36c6a6b
5
5
  SHA512:
6
- metadata.gz: 89ba372c20d10fc5315764121c926e574035acf4a5efc6826a82417f263afa48b8593bd50c08252c9330e705de71143bdd3d6f187ea077c3b6cff50ccfbe39f6
7
- data.tar.gz: 277381d2382c4475d550eb3b1e9904c4720d954ea81c84b0fcbe1914e3c15e6d5d69575fffd9c0cb27fa2a4eacd8e1ccad9168fcd173a796e15247f665276063
6
+ metadata.gz: 40d1961b4ef91c03d58ec3bc9782c03c2862db4aa81eeaca42e8873fa475d4181c05057846030ef7508323c88a1e80c36fa783c8b057b7bd3145a9831f89d286
7
+ data.tar.gz: 86018966453c45e25911663ceb7e910a8a251a51fe2d441210255c2ea3f3ebf69f62c5b3bbc942f0dd5504efc1322071724c2b2f44ec87bb40c9d2340e7405d7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (1.8.12)
4
+ bolognese (1.8.13)
5
5
  activesupport (>= 4.2.5)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (>= 5.1.0)
@@ -64,7 +64,6 @@ module Bolognese
64
64
  journal_article = meta.dig("crossref", "journal", "journal_article") || {}
65
65
  bibliographic_metadata = journal_article.presence || journal_issue.presence || journal_metadata
66
66
  program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
67
-
68
67
  resource_type = if journal_article.present?
69
68
  "journal_article"
70
69
  elsif journal_issue.present?
@@ -150,7 +149,7 @@ module Bolognese
150
149
  "title" => parse_attributes(journal_metadata.to_h["full_title"]),
151
150
  "volume" => parse_attributes(journal_issue.dig("journal_volume", "volume")),
152
151
  "issue" => parse_attributes(journal_issue.dig("issue")),
153
- "firstPage" => bibliographic_metadata.dig("pages", "first_page"),
152
+ "firstPage" => bibliographic_metadata.dig("pages", "first_page") || parse_attributes(journal_article.to_h.dig("publisher_item", "item_number"), first: true),
154
153
  "lastPage" => bibliographic_metadata.dig("pages", "last_page") }.compact
155
154
  elsif book_series_metadata.to_h.fetch("series_metadata", nil).present?
156
155
  issn = normalize_issn(book_series_metadata.dig("series_metadata", "issn"))
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.8.12"
2
+ VERSION = "1.8.13"
3
3
  end
@@ -6,7 +6,7 @@ module Bolognese
6
6
  def bibtex
7
7
  return nil unless valid?
8
8
 
9
- pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].join("-") : nil
9
+ pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].compact.join("-") : nil
10
10
 
11
11
  bib = {
12
12
  bibtex_type: types["bibtex"].presence || "misc",
@@ -0,0 +1,100 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.1103
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; 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
+ - Mon, 12 Oct 2020 21:29:38 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=db4cdafcb2a4ecdd2039ecc54bc79d52a1602538178; expires=Wed, 11-Nov-20
27
+ 21:29:38 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 05c051217300001f21b40ee200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Report-To:
35
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?lkg-colo=71&lkg-time=1602538179"}],"group":"cf-nel","max_age":604800}'
36
+ Nel:
37
+ - '{"report_to":"cf-nel","max_age":604800}'
38
+ Strict-Transport-Security:
39
+ - max-age=31536000; includeSubDomains; preload
40
+ Server:
41
+ - cloudflare
42
+ Cf-Ray:
43
+ - 5e13eae258061f21-FRA
44
+ Alt-Svc:
45
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: |-
49
+ [
50
+ {
51
+ "DOI": "10.1103",
52
+ "RA": "Crossref"
53
+ }
54
+ ]
55
+ http_version:
56
+ recorded_at: Mon, 12 Oct 2020 21:29:38 GMT
57
+ - request:
58
+ method: get
59
+ uri: https://api.crossref.org/works/10.1103/physrevlett.120.117701/transform/application/vnd.crossref.unixsd+xml
60
+ body:
61
+ encoding: US-ASCII
62
+ string: ''
63
+ headers:
64
+ User-Agent:
65
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
66
+ Accept:
67
+ - text/xml
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Link:
74
+ - <http://dx.doi.org/10.1103/physrevlett.120.117701>; rel="canonical", <https://link.aps.org/article/10.1103/PhysRevLett.120.117701>;
75
+ version="vor"; rel="item", <http://harvest.aps.org/v2/journals/articles/10.1103/PhysRevLett.120.117701/fulltext>;
76
+ version="vor"; rel="item", <https://link.aps.org/licenses/aps-default-license>;
77
+ version="vor"; rel="license"
78
+ Access-Control-Allow-Origin:
79
+ - "*"
80
+ Access-Control-Allow-Headers:
81
+ - X-Requested-With
82
+ Content-Length:
83
+ - '15204'
84
+ Server:
85
+ - http-kit
86
+ Date:
87
+ - Mon, 12 Oct 2020 21:29:39 GMT
88
+ X-Rate-Limit-Limit:
89
+ - '50'
90
+ X-Rate-Limit-Interval:
91
+ - 1s
92
+ Connection:
93
+ - close
94
+ body:
95
+ encoding: ASCII-8BIT
96
+ string: !binary |-
97
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iam91cm5hbF9hcnRpY2xlIj4xMC4xMTAzL1BoeXNSZXZMZXR0LjEyMC4xMTc3MDE8L2RvaT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InB1Ymxpc2hlci1uYW1lIiB0eXBlPSJzdHJpbmciPkFtZXJpY2FuIFBoeXNpY2FsIFNvY2lldHkgKEFQUyk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icHJlZml4LW5hbWUiIHR5cGU9InN0cmluZyI+QW1lcmljYW4gUGh5c2ljYWwgU29jaWV0eTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJtZW1iZXItaWQiIHR5cGU9Im51bWJlciI+MTY8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0YXRpb24taWQiIHR5cGU9Im51bWJlciI+OTcxNTAxMzU8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iam91cm5hbC1pZCIgdHlwZT0ibnVtYmVyIj41MjA0PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImRlcG9zaXQtdGltZXN0YW1wIiB0eXBlPSJudW1iZXIiPjIwMTgwMzEzMTUxODQ4PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im93bmVyLXByZWZpeCIgdHlwZT0ic3RyaW5nIj4xMC4xMTAzPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Imxhc3QtdXBkYXRlIiB0eXBlPSJkYXRlIj4yMDE4LTAzLTEzVDExOjE5OjAyWjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjcmVhdGVkIiB0eXBlPSJkYXRlIj4yMDE4LTAzLTEzVDExOjE4OjU2WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRlZGJ5LWNvdW50IiB0eXBlPSJudW1iZXIiPjI1PC9jcm0taXRlbT4NCiAgICAgICAgPGRvaV9yZWNvcmQ+DQogICAgICAgICAgPGNyb3NzcmVmIHhtbG5zPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSBodHRwOi8vZG9pLmNyb3NzcmVmLm9yZy9zY2hlbWFzL3VuaXhyZWYxLjEueHNkIj4NCiAgICAgICAgICAgIDxqb3VybmFsPg0KICAgICAgICAgICAgICA8am91cm5hbF9tZXRhZGF0YSBsYW5ndWFnZT0iZW4iPg0KICAgICAgICAgICAgICAgIDxmdWxsX3RpdGxlPlBoeXNpY2FsIFJldmlldyBMZXR0ZXJzPC9mdWxsX3RpdGxlPg0KICAgICAgICAgICAgICAgIDxhYmJyZXZfdGl0bGU+UGh5cy4gUmV2LiBMZXR0LjwvYWJicmV2X3RpdGxlPg0KICAgICAgICAgICAgICAgIDxpc3NuIG1lZGlhX3R5cGU9InByaW50Ij4wMDMxLTkwMDc8L2lzc24+DQogICAgICAgICAgICAgICAgPGlzc24gbWVkaWFfdHlwZT0iZWxlY3Ryb25pYyI+MTA3OS03MTE0PC9pc3NuPg0KICAgICAgICAgICAgICAgIDxjb2Rlbj5QUkxUQU88L2NvZGVuPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfbWV0YWRhdGE+DQogICAgICAgICAgICAgIDxqb3VybmFsX2lzc3VlPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9InByaW50Ij4NCiAgICAgICAgICAgICAgICAgIDxtb250aD4zPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTg8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxqb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTIwPC92b2x1bWU+DQogICAgICAgICAgICAgICAgPC9qb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICA8aXNzdWU+MTE8L2lzc3VlPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfaXNzdWU+DQogICAgICAgICAgICAgIDxqb3VybmFsX2FydGljbGUgcHVibGljYXRpb25fdHlwZT0iZnVsbF90ZXh0Ij4NCiAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPHRpdGxlPlByZWRpY3Rpb24gb2YgYSBMYXJnZS1HYXAgYW5kIFN3aXRjaGFibGUgS2FuZS1NZWxlIFF1YW50dW0gU3BpbiBIYWxsIEluc3VsYXRvcjwvdGl0bGU+DQogICAgICAgICAgICAgICAgPC90aXRsZXM+DQogICAgICAgICAgICAgICAgPGNvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iZmlyc3QiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkFudGltbzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TWFycmF6em88L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIHNlcXVlbmNlPSJhZGRpdGlvbmFsIiBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXJjbzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+R2liZXJ0aW5pPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iYWRkaXRpb25hbCIgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+RGF2aWRlPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5DYW1waTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk5pY29sYXM8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPk1vdW5ldDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk5pY29sYTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TWFyemFyaTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPC9jb250cmlidXRvcnM+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0ib25saW5lIj4NCiAgICAgICAgICAgICAgICAgIDxtb250aD4zPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDxkYXk+MTM8L2RheT4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTg8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwdWJsaXNoZXJfaXRlbT4NCiAgICAgICAgICAgICAgICAgIDxpdGVtX251bWJlciBpdGVtX251bWJlcl90eXBlPSJhcnRpY2xlLW51bWJlciI+MTE3NzAxPC9pdGVtX251bWJlcj4NCiAgICAgICAgICAgICAgICA8L3B1Ymxpc2hlcl9pdGVtPg0KICAgICAgICAgICAgICAgIDxjcm9zc21hcms+DQogICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX3ZlcnNpb24+Mi4wPC9jcm9zc21hcmtfdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfcG9saWN5PjEwLjExMDMvY3Jvc3NtYXJrLXBvbGljeTwvY3Jvc3NtYXJrX3BvbGljeT4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfZG9tYWlucz4NCiAgICAgICAgICAgICAgICAgICAgPGNyb3NzbWFya19kb21haW4+DQogICAgICAgICAgICAgICAgICAgICAgPGRvbWFpbj5qb3VybmFscy5hcHMub3JnPC9kb21haW4+DQogICAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbj4NCiAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbnM+DQogICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+dHJ1ZTwvY3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+DQogICAgICAgICAgICAgICAgICA8Y3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgICAgICA8ZnI6cHJvZ3JhbSB4bWxuczpmcj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvZnVuZHJlZi54c2QiIG5hbWU9ImZ1bmRyZWYiPg0KICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICBTY2h3ZWl6ZXJpc2NoZXIgTmF0aW9uYWxmb25kcyB6dXIgRsO2cmRlcnVuZyBkZXIgV2lzc2Vuc2NoYWZ0bGljaGVuIEZvcnNjaHVuZw0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS81MDExMDAwMDE3MTE8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICBIb3Jpem9uIDIwMjAgRnJhbWV3b3JrIFByb2dyYW1tZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS8xMDAwMTA2NjE8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8L2ZyOnByb2dyYW0+DQogICAgICAgICAgICAgICAgICAgIDxhaTpwcm9ncmFtIHhtbG5zOmFpPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy9BY2Nlc3NJbmRpY2F0b3JzLnhzZCIgbmFtZT0iQWNjZXNzSW5kaWNhdG9ycyI+DQogICAgICAgICAgICAgICAgICAgICAgPGFpOmxpY2Vuc2VfcmVmIGFwcGxpZXNfdG89InZvciIgc3RhcnRfZGF0ZT0iMjAxOC0wMy0xMyI+aHR0cHM6Ly9saW5rLmFwcy5vcmcvbGljZW5zZXMvYXBzLWRlZmF1bHQtbGljZW5zZTwvYWk6bGljZW5zZV9yZWY+DQogICAgICAgICAgICAgICAgICAgIDwvYWk6cHJvZ3JhbT4NCiAgICAgICAgICAgICAgICAgIDwvY3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrPg0KICAgICAgICAgICAgICAgIDxkb2lfZGF0YT4NCiAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC4xMjAuMTE3NzAxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8dGltZXN0YW1wPjIwMTgwMzEzMTUxODQ4PC90aW1lc3RhbXA+DQogICAgICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cHM6Ly9saW5rLmFwcy5vcmcvZG9pLzEwLjExMDMvUGh5c1JldkxldHQuMTIwLjExNzcwMTwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICA8Y29sbGVjdGlvbiBwcm9wZXJ0eT0iY3Jhd2xlci1iYXNlZCI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vaGFydmVzdC5hcHMub3JnL3YyL2pvdXJuYWxzL2FydGljbGVzLzEwLjExMDMvUGh5c1JldkxldHQuMTIwLjExNzcwMS9mdWxsdGV4dDwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJzeW5kaWNhdGlvbiI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZSBjb250ZW50X3ZlcnNpb249InZvciI+aHR0cHM6Ly9saW5rLmFwcy5vcmcvYXJ0aWNsZS8xMC4xMTAzL1BoeXNSZXZMZXR0LjEyMC4xMTc3MDE8L3Jlc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC42MS4yMDE1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0Ljk1LjIyNjgwMTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzNSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC45NS4xNDY4MDI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPlRvcG9sb2dpY2FsIEluc3VsYXRvcnMgYW5kIFRvcG9sb2dpY2FsIFN1cGVyY29uZHVjdG9yczwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkIu4oCJQS4gQmVybmV2aWc8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTUxNS85NzgxNDAwODQ2NzMzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTI2L3NjaWVuY2UuMTE0ODA0NzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEyNi9zY2llbmNlLjExMzM3MzQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMzgvbm1hdDUwMTI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMjYvc2NpZW5jZS5hYWk4MTQyPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjOVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTExL2ouMTM2NS0zMTIxLjIwMDcuMDA3ODMueDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzEwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjM3NDkvY2FubWluLjUwLjIuNDMxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTNSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4OC8wOTUzLTg5ODQvMjEvMzkvMzk1NTAyPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTRSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4OC8xMzYxLTY0OFgvYWE4Zjc5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTVSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi44Mi4wODExMDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MxNlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjgxLjE2MTEwNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzE3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkxldHQuMTAzLjA2MzAwNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzE4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODcuMDQxMTA4PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC4xMDIuMDczMDA1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjBSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC43Ny4zODY1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi44OC4wODUxMTc8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MyNFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE2L2ouY29tbWF0c2NpLjIwMTMuMDguMDUzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNvbW1hdHNjaS4yMDE0LjA3LjA0MzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzI3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMTYvai5jcGMuMjAxNS4wNS4wMTE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MyOFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE2L2ouY3BjLjIwMDkuMDIuMDAzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNwYy4yMDE0LjA1LjAwMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzMwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMTYvai5jb21tYXRzY2kuMjAxNS4wOS4wMTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzMVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjEwOC4yMzU1MDI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzM1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1Jldk1vZFBoeXMuODQuMTQxOTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzM0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODQuMTk1NDMwPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMzZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNwYy4yMDE3LjA5LjAzMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzM3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODMuMjM1NDAxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMzhSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi45NS4wNzUxNDY8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzOVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY0LjExNTIwMjwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMzgvbnBoeXM0MDkxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNDFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAzOC9ucGh5czQxNzQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0MlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTI2L3NjaWVuY2UuYWFuNjAwMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQzUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwODgvMDMwNS00NjA4LzE1LzQvMDA5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNDRSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC45NS4wNzY4MDQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0NVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY5LjAzNTEwODwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQ2UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUmV2TW9kUGh5cy43My41MTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0N1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjk2LjA3NTQ0ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQ4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMjEvYWNzLm5hbm9sZXR0LjdiMDEwOTA8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0OVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjE5LjM1OTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1MFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjUzLjUwNDc8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjExNy4yMjY4MDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjExNy4yNDY0MDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDM4L25jb21tczgzMTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1N1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDM4L25hdHVyZTIzOTA1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNTlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAwMi93Y21zLjEyODA8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M2MFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY4LjA0NTQwNzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzYxUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMjEvbmw0MDA3NDc5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNjJSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi45MS4xMjUzMDQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M2M1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjg5LjIwNTQxNzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzY0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwNjMvMS40ODI0ODkzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgPC9qb3VybmFsX2FydGljbGU+DQogICAgICAgICAgICA8L2pvdXJuYWw+DQogICAgICAgICAgPC9jcm9zc3JlZj4NCiAgICAgICAgPC9kb2lfcmVjb3JkPg0KICAgICAgPC9xdWVyeT4NCiAgICA8L2JvZHk+DQogIDwvcXVlcnlfcmVzdWx0Pg0KPC9jcm9zc3JlZl9yZXN1bHQ+
98
+ http_version:
99
+ recorded_at: Mon, 12 Oct 2020 21:29:39 GMT
100
+ recorded_with: VCR 3.0.3
@@ -33,7 +33,7 @@ describe Bolognese::Metadata, vcr: true do
33
33
  expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2018-08-23T13:41:49Z", "dateType"=>"Updated"}])
34
34
  expect(subject.publication_year).to eq("2014")
35
35
  expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
36
- expect(subject.container).to eq("identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
36
+ expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
37
37
  expect(subject.related_identifiers.length).to eq(27)
38
38
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
39
39
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
@@ -100,7 +100,7 @@ describe Bolognese::Metadata, vcr: true do
100
100
  expect(subject.related_identifiers.length).to eq(70)
101
101
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
102
102
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
103
- expect(subject.container).to eq("identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
103
+ expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
104
104
  expect(subject.agency).to eq("crossref")
105
105
  end
106
106
 
@@ -718,6 +718,24 @@ describe Bolognese::Metadata, vcr: true do
718
718
  expect(subject.date_registered).to eq("2012-10-31T16:15:44Z")
719
719
  end
720
720
 
721
+ it "article id as page number" do
722
+ input = "https://doi.org/10.1103/physrevlett.120.117701"
723
+ subject = Bolognese::Metadata.new(input: input)
724
+ expect(subject.valid?).to be true
725
+ expect(subject.id).to eq("https://doi.org/10.1103/physrevlett.120.117701")
726
+ expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701")
727
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
728
+ expect(subject.creators.length).to eq(5)
729
+ expect(subject.creators.first).to eq("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal")
730
+ expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}])
731
+ expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"})
732
+ expect(subject.publication_year).to eq("2018")
733
+ expect(subject.publisher).to eq("American Physical Society (APS)")
734
+ expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120")
735
+ expect(subject.agency).to eq("crossref")
736
+ expect(subject.date_registered).to eq("2018-03-13T15:18:48Z")
737
+ end
738
+
721
739
  it "posted content copernicus" do
722
740
  input = "https://doi.org/10.5194/CP-2020-95"
723
741
  subject = Bolognese::Metadata.new(input: input)
@@ -56,7 +56,7 @@ describe Bolognese::Metadata, vcr: true do
56
56
  expect(bibtex[:bibtex_key]).to eq("https://doi.org/10.3204/desy-2014-01645")
57
57
  expect(bibtex[:doi]).to eq("10.3204/desy-2014-01645")
58
58
  expect(bibtex[:title]).to eq("Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy")
59
- expect(bibtex[:pages]).to eq("2014-")
59
+ expect(bibtex[:pages]).to eq("2014")
60
60
  expect(bibtex[:year]).to eq("2014")
61
61
  end
62
62
 
@@ -9,7 +9,7 @@ describe Bolognese::Metadata, vcr: true do
9
9
  subject = Bolognese::Metadata.new(input: input, from: "crossref")
10
10
  expect(subject.style).to eq("apa")
11
11
  expect(subject.locale).to eq("en-US")
12
- expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., &amp; Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i>. https://doi.org/10.7554/elife.01567")
12
+ expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., &amp; Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i>, e01567. https://doi.org/10.7554/elife.01567")
13
13
  end
14
14
 
15
15
  it "Journal article vancouver style" do
@@ -17,7 +17,7 @@ describe Bolognese::Metadata, vcr: true do
17
17
  subject = Bolognese::Metadata.new(input: input, from: "crossref", style: "vancouver", locale: "en-US")
18
18
  expect(subject.style).to eq("vancouver")
19
19
  expect(subject.locale).to eq("en-US")
20
- expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3. Available from: https://elifesciences.org/articles/01567")
20
+ expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3:e01567. Available from: https://elifesciences.org/articles/01567")
21
21
  end
22
22
 
23
23
  it "Dataset" do
@@ -316,7 +316,7 @@ describe Bolognese::Metadata, vcr: true do
316
316
  subject.descriptions = { "description" => "This is an abstract." }
317
317
  expect(subject.valid?).to be true
318
318
  datacite = Maremma.from_xml(subject.datacite).fetch("resource", {})
319
- expect(datacite.dig("descriptions", "description")).to eq( [{"__content__"=>"eLife, 3", "descriptionType"=>"SeriesInformation"}, {"__content__"=>"This is an abstract.", "descriptionType"=>"Abstract"}])
319
+ expect(datacite.dig("descriptions", "description")).to eq([{"__content__"=>"eLife, 3, e01567", "descriptionType"=>"SeriesInformation"}, {"__content__"=>"This is an abstract.", "descriptionType"=>"Abstract"}])
320
320
  end
321
321
 
322
322
  it "change description no input" do
@@ -19,8 +19,9 @@ describe Bolognese::Metadata, vcr: true do
19
19
  expect(ris[11]).to eq("PY - 2014")
20
20
  expect(ris[12]).to eq("PB - eLife Sciences Publications, Ltd")
21
21
  expect(ris[13]).to eq("VL - 3")
22
- expect(ris[14]).to eq("SN - 2050-084X")
23
- expect(ris[15]).to eq("ER - ")
22
+ expect(ris[14]).to eq("SP - e01567")
23
+ expect(ris[15]).to eq("SN - 2050-084X")
24
+ expect(ris[16]).to eq("ER - ")
24
25
  end
25
26
 
26
27
  it "with pages" do
@@ -11,7 +11,7 @@ describe Bolognese::Metadata, vcr: true do
11
11
  expect(json["@id"]).to eq("https://doi.org/10.7554/elife.01567")
12
12
  expect(json["@type"]).to eq("ScholarlyArticle")
13
13
  expect(json["isPartOf"]).to eq("@type"=>"Periodical", "issn"=>"2050-084X")
14
- expect(json["periodical"]).to eq("@type"=>"Journal", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
14
+ expect(json["periodical"]).to eq("@type"=>"Journal", "firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
15
15
  expect(json["citation"].length).to eq(26)
16
16
  expect(json["citation"].first).to eq("@id"=>"https://doi.org/10.1038/nature02100", "@type"=>"CreativeWork")
17
17
  expect(json["funder"]).to eq([{"name"=>"SystemsX", "@type"=>"Organization"},
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.8.12
4
+ version: 1.8.13
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-10-12 00:00:00.000000000 Z
11
+ date: 2020-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -899,6 +899,7 @@ files:
899
899
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/affiliation_is_space.yml
900
900
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book.yml
901
901
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book_chapter.yml
902
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml
902
903
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml
903
904
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book.yml
904
905
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter.yml