maremma 4.0.12 → 4.1

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: 7e2fd0de1fd42dc94406135be9b76612dacd421bf77cee65a3fcdfd9f7fa9ff3
4
- data.tar.gz: 69eab22631dc79c29679d4d22b3afe8282b282b61e3bb5a083eace092a4e73ca
3
+ metadata.gz: 91bc555b7495fa34e4f9e18a42bbb387525cb05a21549d14c22d4de75175884b
4
+ data.tar.gz: 87b35ecb903d29576aa8377ee4a473ed3c5592bfb46c967435f80d49f57b4a9c
5
5
  SHA512:
6
- metadata.gz: 0e4c0bf49830d333aafbd3ff35e4a98e16ed2f951a2c887816e563404d6f39a87e9842ca9d9ae30bab20b8b4e6588544a77e9d82fe89f69fd06edcd6bcc98ca0
7
- data.tar.gz: b60858dfb7e5813fb2d81597ceb6b55e6e92c54a327dad26f60a856924ca2fc8f85c29554b7cf7fa818fa24450ee1632656448a0fc7eb1a3f046d303dbea96a3
6
+ metadata.gz: 8199ef3ccd219be1ad46ae6efb4491c96df2eb0f883033f2c77132d92a10f882c3ec9c75953fc0ef57f5e8fd21e28de926cc12769a1c235eaee1997bf2770101
7
+ data.tar.gz: 5eb49dffd5b1b09f1cdf6e52ff641f8958f74b4b14246b93641ae1bc985f6e59465e6b62b49fc981e7dda8066d24a835b7ca666b3a3ca7ae4e0b6c02dd4220a6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- maremma (4.0.12)
4
+ maremma (4.1)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  addressable (>= 2.3.6)
7
7
  builder (~> 3.2, >= 3.2.2)
@@ -48,7 +48,7 @@ GEM
48
48
  multipart-post (2.0.0)
49
49
  nokogiri (1.8.4)
50
50
  mini_portile2 (~> 2.3.0)
51
- oj (3.6.3)
51
+ oj (3.6.4)
52
52
  public_suffix (3.0.2)
53
53
  rack (2.0.5)
54
54
  rack-test (0.8.3)
data/lib/maremma.rb CHANGED
@@ -101,6 +101,7 @@ module Maremma
101
101
  limit = options[:limit] || 10
102
102
 
103
103
  Faraday.new do |c|
104
+ c.ssl.verify = false if options[:ssl_self_signed]
104
105
  c.options.params_encoder = Faraday::FlatParamsEncoder
105
106
  c.headers['Content-type'] = options[:headers]['Content-type'] if options[:headers]['Content-type'].present?
106
107
  c.headers['Accept'] = options[:headers]['Accept']
@@ -1,3 +1,3 @@
1
1
  module Maremma
2
- VERSION = "4.0.12"
2
+ VERSION = "4.1"
3
3
  end
@@ -0,0 +1,102 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/10.5281/ZENODO.21430
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.1; +https://github.com/datacite/maremma)
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: 302
17
+ message: ''
18
+ headers:
19
+ Date:
20
+ - Tue, 24 Jul 2018 09:15:08 GMT
21
+ Content-Type:
22
+ - text/html;charset=utf-8
23
+ Content-Length:
24
+ - '147'
25
+ Connection:
26
+ - keep-alive
27
+ Set-Cookie:
28
+ - __cfduid=d17268df919dc163ba4fa8e0d06e2576c1532423707; expires=Wed, 24-Jul-19
29
+ 09:15:07 GMT; path=/; domain=.doi.org; HttpOnly
30
+ Expires:
31
+ - Tue, 24 Jul 2018 09:47:21 GMT
32
+ Location:
33
+ - https://zenodo.org/record/21430
34
+ Vary:
35
+ - Accept
36
+ Expect-Ct:
37
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
38
+ Server:
39
+ - cloudflare
40
+ Cf-Ray:
41
+ - 43f547ceb8f96cd6-SJC
42
+ body:
43
+ encoding: ASCII-8BIT
44
+ string: |-
45
+ <html><head><title>Handle Redirect</title></head>
46
+ <body><a href="https://zenodo.org/record/21430">https://zenodo.org/record/21430</a></body></html>
47
+ http_version:
48
+ recorded_at: Tue, 24 Jul 2018 09:15:08 GMT
49
+ - request:
50
+ method: get
51
+ uri: https://zenodo.org/record/21430
52
+ body:
53
+ encoding: US-ASCII
54
+ string: ''
55
+ headers:
56
+ User-Agent:
57
+ - Mozilla/5.0 (compatible; Maremma/4.1; +https://github.com/datacite/maremma)
58
+ Accept:
59
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
60
+ response:
61
+ status:
62
+ code: 200
63
+ message: OK
64
+ headers:
65
+ Server:
66
+ - nginx/1.12.2
67
+ Date:
68
+ - Tue, 24 Jul 2018 09:15:09 GMT
69
+ Content-Type:
70
+ - text/html; charset=utf-8
71
+ Content-Length:
72
+ - '24642'
73
+ Vary:
74
+ - Accept-Encoding
75
+ X-Frame-Options:
76
+ - sameorigin
77
+ X-Xss-Protection:
78
+ - 1; mode=block
79
+ X-Content-Type-Options:
80
+ - nosniff
81
+ Strict-Transport-Security:
82
+ - max-age=0
83
+ Referrer-Policy:
84
+ - strict-origin-when-cross-origin
85
+ X-Ratelimit-Limit:
86
+ - '5000'
87
+ X-Ratelimit-Remaining:
88
+ - '4999'
89
+ X-Ratelimit-Reset:
90
+ - '1532427310'
91
+ Retry-After:
92
+ - '3600'
93
+ Set-Cookie:
94
+ - session=89ed481c1ad70bf8_5b56ee1d.ju1ht4DGZl5mcnsFwvDLAimW4Dw; Expires=Fri,
95
+ 24-Aug-2018 09:15:09 GMT; Secure; HttpOnly; Path=/
96
+ body:
97
+ encoding: ASCII-8BIT
98
+ string: !binary |-
99
+ CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiIgZGlyPSJsdHIiPgogIDxoZWFkPgoKICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSI1ZlBHQ0xsbG5XcnZGeEg5UVdJMGwxVGFkVjdieWVFdmZQY3lLMlZrU19zIi8+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IlJwNXpwMDRJS1ctczFJYnBUT0dCN1o2WFk2MG9sb1pENUMza1RNLUFpWTQiLz4KICAgIDx0aXRsZT5EYXRhQ2l0ZS1PUkNJRDogMS4wIHwgWmVub2RvPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iL3N0YXRpYy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBzaXplcz0iMTQ0eDE0NCIgaHJlZj0iL3N0YXRpYy9hcHBsZS10b3VjaC1pY29uLTE0NC1wcmVjb21wb3NlZC5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii9zdGF0aWMvYXBwbGUtdG91Y2gtaWNvbi0xMTQtcHJlY29tcG9zZWQucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIHNpemVzPSI3Mng3MiIgaHJlZj0iL3N0YXRpYy9hcHBsZS10b3VjaC1pY29uLTcyLXByZWNvbXBvc2VkLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBzaXplcz0iNTd4NTciIGhyZWY9Ii9zdGF0aWMvYXBwbGUtdG91Y2gtaWNvbi01Ny1wcmVjb21wb3NlZC5wbmciLz4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsNDAwLDUwMCw3MDAsMTAwLGl0YWxpYyIgcmVsPSJzdHlsZXNoZWV0Ij4KPGxpbmsgaHJlZj0iL3N0YXRpYy9nZW4vemVub2RvLjJlMjBiZGM1LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KPCEtLSBIVE1MNSBzaGltIGFuZCBSZXNwb25kLmpzIGZvciBJRTggc3VwcG9ydCBvZiBIVE1MNSBlbGVtZW50cyBhbmQgbWVkaWEgcXVlcmllcyAtLT4KPCEtLVtpZiBsdCBJRSA5XT4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9vc3MubWF4Y2RuLmNvbS9odG1sNXNoaXYvMy43LjIvaHRtbDVzaGl2Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vb3NzLm1heGNkbi5jb20vcmVzcG9uZC8xLjQuMi9yZXNwb25kLm1pbi5qcyI+PC9zY3JpcHQ+CjwhW2VuZGlmXS0tPgogIAogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkRhdGFDaXRlLU9SQ0lEIGlzIGEgUnVieSBTaW5hdHJhIHdlYiBhcHBsaWNhdGlvbiB0byBhbGxvdyB1c2VycyB0byBjbGFpbSBEYXRhQ2l0ZSBET0lzIGZvciB0aGVpciBPUkNJRCBwcm9maWxlLsKgMS4wIHdhcyByZWxlYXNlZCBvbiBKdWx5IDI1LCAyMDE1IHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzOiB1c2UgRU5WIHZhcmlhYmxlcyBhbmQgZG90ZW52ICgjMSkgdXBkYXRlZCBWYWdyYW50ZmlsZSBhbmQgQ2hlZiBjb29rYm9va3MgKCMyKSB1c2Ugc2VudHJ5IGZvciBlcnJvciB0cmFja2luZyAoIzQpIHJlbW92ZSBvYnNvbGV0ZSBjdWN1bWJlciB0ZXN0cyAoIzUpIiAvPgogICAgPG1ldGEgbmFtZT0iY2l0YXRpb25fdGl0bGUiIGNvbnRlbnQ9IkRhdGFDaXRlLU9SQ0lEOiAxLjAiIC8+CiAgICA8bWV0YSBuYW1lPSJjaXRhdGlvbl9hdXRob3IiIGNvbnRlbnQ9Ik1hcnRpbiBGZW5uZXIiIC8+CiAgICA8bWV0YSBuYW1lPSJjaXRhdGlvbl9hdXRob3IiIGNvbnRlbnQ9IkthcmwgSm9uYXRoYW4gV2FyZCIgLz4KICAgIDxtZXRhIG5hbWU9ImNpdGF0aW9uX2F1dGhvciIgY29udGVudD0iR3VkbXVuZHVyIEEuIFRob3Jpc3NvbiIgLz4KICAgIDxtZXRhIG5hbWU9ImNpdGF0aW9uX2F1dGhvciIgY29udGVudD0iUm9iZXJ0IFBldGVycyIgLz4KICAgIDxtZXRhIG5hbWU9ImNpdGF0aW9uX3B1YmxpY2F0aW9uX2RhdGUiIGNvbnRlbnQ9IjIwMTUvMDcvMjUiIC8+CiAgICA8bWV0YSBuYW1lPSJjaXRhdGlvbl9kb2kiIGNvbnRlbnQ9IjEwLjUyODEvemVub2RvLjIxNDMwIiAvPgogICAgPG1ldGEgbmFtZT0iY2l0YXRpb25fa2V5d29yZHMiIGNvbnRlbnQ9Im9yY2lkIiAvPgogICAgPG1ldGEgbmFtZT0iY2l0YXRpb25fa2V5d29yZHMiIGNvbnRlbnQ9ImRhdGFjaXRlIiAvPgogICAgPG1ldGEgbmFtZT0iY2l0YXRpb25fa2V5d29yZHMiIGNvbnRlbnQ9InJ1YnkiIC8+CiAgICA8bWV0YSBuYW1lPSJjaXRhdGlvbl9hYnN0cmFjdF9odG1sX3VybCIgY29udGVudD0iaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8yMTQzMCIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iRGF0YUNpdGUtT1JDSUQ6IDEuMCIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRGF0YUNpdGUtT1JDSUQgaXMgYSBSdWJ5IFNpbmF0cmEgd2ViIGFwcGxpY2F0aW9uIHRvIGFsbG93IHVzZXJzIHRvIGNsYWltIERhdGFDaXRlIERPSXMgZm9yIHRoZWlyIE9SQ0lEIHByb2ZpbGUuwqAxLjAgd2FzIHJlbGVhc2VkIG9uIEp1bHkgMjUsIDIwMTUgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6IHVzZSBFTlYgdmFyaWFibGVzIGFuZCBkb3RlbnYgKCMxKSB1cGRhdGVkIFZhZ3JhbnRmaWxlIGFuZCBDaGVmIGNvb2tib29rcyAoIzIpIHVzZSBzZW50cnkgZm9yIGVycm9yIHRyYWNraW5nICgjNCkgcmVtb3ZlIG9ic29sZXRlIGN1Y3VtYmVyIHRlc3RzICgjNSkiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzIxNDMwIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iWmVub2RvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAemVub2RvX29yZyIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IkRhdGFDaXRlLU9SQ0lEOiAxLjAiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJEYXRhQ2l0ZS1PUkNJRCBpcyBhIFJ1YnkgU2luYXRyYSB3ZWIgYXBwbGljYXRpb24gdG8gYWxsb3cgdXNlcnMgdG8gY2xhaW0gRGF0YUNpdGUgRE9JcyBmb3IgdGhlaXIgT1JDSUQgcHJvZmlsZS7CoDEuMCB3YXMgcmVsZWFzZWQgb24gSnVseSAyNSwgMjAxNSB3aXRoIHRoZSBmb2xsb3dpbmcgY2hhbmdlczogdXNlIEVOViB2YXJpYWJsZXMgYW5kIGRvdGVudiAoIzEpIHVwZGF0ZWQgVmFncmFudGZpbGUgYW5kIENoZWYgY29va2Jvb2tzICgjMikgdXNlIHNlbnRyeSBmb3IgZXJyb3IgdHJhY2tpbmcgKCM0KSByZW1vdmUgb2Jzb2xldGUgY3VjdW1iZXIgdGVzdHMgKCM1KSIgLz4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzIxNDMwIj4KICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJhcHBsaWNhdGlvbi96aXAiIGhyZWY9Imh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvMjE0MzAvZmlsZXMvRGF0YUNpdGUtT1JDSUQtdi4xLjAuemlwIj4KICA8L2hlYWQ+CiAgPGJvZHkgbmctY3NwICBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1dlYlBhZ2UiIGRhdGEtc3B5PSJzY3JvbGwiIGRhdGEtdGFyZ2V0PSIuc2Nyb2xsc3B5LXRhcmdldCI+CiAgICA8IS0tW2lmIGx0IElFIDhdPgogICAgICA8cCBjbGFzcz0iYnJvd3NlcnVwZ3JhZGUiPllvdSBhcmUgdXNpbmcgYW4gPHN0cm9uZz5vdXRkYXRlZDwvc3Ryb25nPiBicm93c2VyLiBQbGVhc2UgPGEgaHJlZj0iaHR0cDovL2Jyb3dzZWhhcHB5LmNvbS8iPnVwZ3JhZGUgeW91ciBicm93c2VyPC9hPiB0byBpbXByb3ZlIHlvdXIgZXhwZXJpZW5jZS48L3A+CiAgICA8IVtlbmRpZl0tLT4KCjxoZWFkZXI+CiAgPG5hdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1kZWZhdWx0IG5hdmJhci1zdGF0aWMtdG9wIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1oZWFkZXIiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibmF2YmFyLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYXZiYXIiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJuYXZiYXIiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InNyLW9ubHkiPlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGEgaHJlZj0iLyI+PGltZyBjbGFzcz0ibmF2YmFyLWJyYW5kIiBzcmM9Ii9zdGF0aWMvaW1nL3plbm9kby5zdmciIGFsdD0iWmVub2RvIiAvPjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9Im5hdmJhciIgY2xhc3M9Im5hdmJhci1jb2xsYXBzZSBjb2xsYXBzZSI+Cjxmb3JtIGNsYXNzPSJuYXZiYXItZm9ybSBuYXZiYXItbGVmdCBuYXZiYXItc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIHJvbGU9InNlYXJjaCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIHNlYXJjaCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+CiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT48L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9mb3JtPgogICAgICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2RlcG9zaXQiPlVwbG9hZDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbW11bml0aWVzLyI+Q29tbXVuaXRpZXM8L2E+PC9saT4KICAgICAgICA8L3VsPgo8Zm9ybSBjbGFzcz0ibmF2YmFyLWZvcm0gbmF2YmFyLXJpZ2h0Ij4KICA8YSBocmVmPSIvbG9naW4vP25leHQ9JTJGcmVjb3JkJTJGMjE0MzAiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiPjxpIGNsYXNzPSJmYSBmYS1zaWduLWluIj48L2k+IExvZyBpbjwvYT4KICA8YSBocmVmPSIvc2lnbnVwLyIgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi13YXJuaW5nIj48aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPiBTaWduIHVwPC9hPgo8L2Zvcm0+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9uYXY+CgoKPC9oZWFkZXI+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciByZWNvcmQtZGV0YWlsIj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTggY29sLW1kLTggY29sLWxlZnQiPgogICAgICA8cD4KICAgICAgICA8dGltZSBkYXRldGltZT0iSnVseSAyNSwgMjAxNSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSJQdWJsaWNhdGlvbiBkYXRlIj5KdWx5IDI1LCAyMDE1PC90aW1lPgogICAgICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij4KICAgICAgICAgIAo8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtZGVmYXVsdCI+U29mdHdhcmU8L3NwYW4+CiAgICAgICAgICAKPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLXN1Y2Nlc3MiPgpPcGVuIEFjY2Vzcwo8L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3A+CiAgICAgIDxoMT5EYXRhQ2l0ZS1PUkNJRDogMS4wPC9oMT4KICAgICAgPHA+CjxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgdGl0bGU9Ik9SQ0lEIEVVIj5NYXJ0aW4gRmVubmVyPC9zcGFuPjsgCjxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgdGl0bGU9IkNyb3NzUmVmIj5LYXJsIEpvbmF0aGFuIFdhcmQ8L3NwYW4+OyAKPHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iT1JDSUQgRVUiPkd1ZG11bmR1ciBBLiBUaG9yaXNzb248L3NwYW4+OyAKPHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iT1JDSUQiPlJvYmVydCBQZXRlcnM8L3NwYW4+PC9wPgogICAgICA8cD48cD5EYXRhQ2l0ZS1PUkNJRCBpcyBhIFJ1YnkgU2luYXRyYSB3ZWIgYXBwbGljYXRpb24gdG8gYWxsb3cgdXNlcnMgdG8gY2xhaW0gRGF0YUNpdGUgRE9JcyBmb3IgdGhlaXIgT1JDSUQgcHJvZmlsZS4mbmJzcDsxLjAgd2FzIHJlbGVhc2VkIG9uIEp1bHkgMjUsIDIwMTUgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6PC9wPgoKPHVsPgoJPGxpPnVzZSBFTlYgdmFyaWFibGVzIGFuZCBkb3RlbnYgKCMxKTwvbGk+Cgk8bGk+dXBkYXRlZCBWYWdyYW50ZmlsZSBhbmQgQ2hlZiBjb29rYm9va3MgKCMyKTwvbGk+Cgk8bGk+dXNlIHNlbnRyeSBmb3IgZXJyb3IgdHJhY2tpbmcgKCM0KTwvbGk+Cgk8bGk+cmVtb3ZlIG9ic29sZXRlIGN1Y3VtYmVyIHRlc3RzICgjNSk8L2xpPgo8L3VsPjwvcD4KCgogIDxkaXYgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiIGlkPSJwcmV2aWV3Ij4KICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRpbmciPgogICAgICA8YSBjbGFzcz0icGFuZWwtdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiNjb2xsYXBzZU9uZSI+CiAgICAgICAgUHJldmlldwogICAgICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0IHNob3ctb24tY29sbGFwc2VkIj48aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCI+PC9pPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHVsbC1yaWdodCBoaWRlLW9uLWNvbGxhcHNlZCI+PGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPjwvc3Bhbj4KICAgICAgPC9hPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJjb2xsYXBzZU9uZSIgY2xhc3M9ImNvbGxhcHNlIGluIj4KICA8aWZyYW1lCiAgIGNsYXNzPSJwcmV2aWV3LWlmcmFtZSIKICAgaWQ9InByZXZpZXctaWZyYW1lIgogICB3aWR0aD0iMTAwJSIKICAgaGVpZ2h0PSI0MDAiCiAgIHNyYz0iL3JlY29yZC8yMTQzMC9wcmV2aWV3L0RhdGFDaXRlLU9SQ0lELXYuMS4wLnppcCI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KICA8L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1kZWZhdWx0IiBpZD0iZmlsZXMiPgogIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRpbmciPgogICAgPGEgY2xhc3M9InBhbmVsLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBocmVmPSIjY29sbGFwc2VUd28iPgogICAgICBGaWxlcwogICAgICA8c3BhbiBjbGFzcz0icHVsbC1yaWdodCBzaG93LW9uLWNvbGxhcHNlZCI+PGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiPjwvaT48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0IGhpZGUtb24tY29sbGFwc2VkIj48aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+PC9zcGFuPgogICAgPC9hPgogICAgPHNtYWxsIGNsYXNzPSJ0ZXh0LW11dGVkIj4gKDQzOC4wIGtCKTwvc21hbGw+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgaW4iIGlkPSJjb2xsYXBzZVR3byI+CiAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zdHJpcGVkIiA+CiAgICA8dGhlYWQ+CiAgICAgIDx0ciBjbGFzcz0iIj4KICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgPHRoPlNpemU8L3RoPgogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgIDxhIGNsYXNzPSJmaWxlbmFtZSIgaHJlZj0iL3JlY29yZC8yMTQzMC9maWxlcy9EYXRhQ2l0ZS1PUkNJRC12LjEuMC56aXA/ZG93bmxvYWQ9MSI+RGF0YUNpdGUtT1JDSUQtdi4xLjAuemlwPC9hPgogICAgICAgICAgPGJyLz48c21hbGwgY2xhc3M9InRleHQtbXV0ZWQgbm93cmFwIj5tZDU6YzRhZTE3NTVkYzhjNGY1ZDI2ZDdkODVmODg4N2UyYTAgPGkgY2xhc3M9ImZhIGZhLXF1ZXN0aW9uLWNpcmNsZSB0ZXh0LW11dGVkIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgdG9vbHRpcCBkYXRhLXBsYWNlbWVudD0idG9wIiB0aXRsZT0iVGhpcyBpcyB0aGUgZmlsZSBmaW5nZXJwcmludCAoTUQ1IGNoZWNrc3VtKSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IHRoZSBmaWxlIGludGVncml0eS4iPjwvaT48L3NtYWxsPgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkIGNsYXNzPSJub3dyYXAiPjQzOC4wIGtCPC90ZD4KICAgICAgICA8dGQgY2xhc3M9Im5vd3JhcCI+PHNwYW4gY2xhc3M9InB1bGwtcmlnaHQiPjxidXR0b24gY2xhc3M9ImJ0biBwcmV2aWV3LWxpbmsgYnRuLXhzIGJ0bi1kZWZhdWx0IiBkYXRhLWZpbGVuYW1lPSJEYXRhQ2l0ZS1PUkNJRC12LjEuMC56aXAiPjxpIGNsYXNzPSJmYSBmYS1leWUiPjwvaT4gUHJldmlldzwvYnV0dG9uPiA8YSBjbGFzcz0iYnRuIGJ0bi14cyBidG4tZGVmYXVsdCIgaHJlZj0iL3JlY29yZC8yMTQzMC9maWxlcy9EYXRhQ2l0ZS1PUkNJRC12LjEuMC56aXA/ZG93bmxvYWQ9MSI+PGkgY2xhc3M9ImZhIGZhLWRvd25sb2FkIj48L2k+IERvd25sb2FkPC9hPjwvc3Bhbj48L3RkPgogICAgICA8L3RyPjwvdGJvZHk+CiAgICA8L3RhYmxlPgogIDwvZGl2Pgo8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgY29sLW1kLTQgY29sLXJpZ2h0Ij4KCgogICAgICAKICAgICAgPGRpdiBjbGFzcz0id2VsbCI+PCEtLSBTdGF0cyAtLT4KPGRpdiBjbGFzcz0icm93IHN0YXRzLWJveCI+CiAgPGRpdiBpZD0iYWNjb3JkaW9uIj4KICAgIDwhLS0gQmFubmVyIC0tPjxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHMtZGF0YSI+MTI8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzLWRhdGEiPjA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWV5ZSAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0b29sdGlwIGRhdGEtcGxhY2VtZW50PSJ0b3AiIHRpdGxlPSJUb3RhbCB2aWV3cy4iIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRvdGFsIHZpZXdzLiI+PC9pPiB2aWV3cwogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgICAgIDxpIGNsYXNzPSJmYSBmYS1kb3dubG9hZCAiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0b29sdGlwIGRhdGEtcGxhY2VtZW50PSJ0b3AiIHRpdGxlPSJUb3RhbCBkb3dubG9hZHMuIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUb3RhbCBkb3dubG9hZHMuIj48L2k+IGRvd25sb2FkcwogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gQ29sbGFwc2VkIGRldGFpbHMgLS0+CiAgICA8ZGl2IGlkPSJ0b2dnbGUtc3RhdHMiIGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICAgIDxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBjbGFzcz0icGFuZWwtdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjY29sbGFwc2Utc3RhdHMiIGFyaWEtZXhwYW5kZWQ9InRydWUiIGFyaWEtY29udHJvbHM9ImNvbGxhcHNlLXN0YXRzIj4KICAgICAgICAgIFNlZSBtb3JlIGRldGFpbHMuLi4KICAgICAgICA8L2E+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJjb2xsYXBzZS1zdGF0cyIgY2xhc3M9ImNvbGxhcHNlIiBhcmlhLWxhYmVsbGVkYnk9InRvZ2dsZS1zdGF0cyIgZGF0YS1wYXJlbnQ9IiNhY2NvcmRpb24iPgogICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHN0YXRzLXRhYmxlIj4KICAgICAgICA8IS0tIFNraXAgdGFibGUgaGVhZGVyIGlmIG5vIHZlcnNpb25zIC0tPjx0cj4KICAgICAgICAgIDx0aD48L3RoPgogICAgICAgICAgPHRoPkFsbCB2ZXJzaW9uczwvdGg+CiAgICAgICAgICA8dGg+VGhpcyB2ZXJzaW9uPC90aD4KICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgIDx0ZD5WaWV3cyA8aSBjbGFzcz0iZmEgZmEtcXVlc3Rpb24tY2lyY2xlIHRleHQtbXV0ZWQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0b29sdGlwIGRhdGEtcGxhY2VtZW50PSJ0b3AiIHRpdGxlPSJUb3RhbCB2aWV3cy4iIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRvdGFsIHZpZXdzLiI+PC9pPjwvdGQ+PHRkPjEyPC90ZD48dGQ+MTI8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkRvd25sb2FkcyA8aSBjbGFzcz0iZmEgZmEtcXVlc3Rpb24tY2lyY2xlIHRleHQtbXV0ZWQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0b29sdGlwIGRhdGEtcGxhY2VtZW50PSJ0b3AiIHRpdGxlPSJUb3RhbCBkb3dubG9hZHMuIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJUb3RhbCBkb3dubG9hZHMuIj48L2k+PC90ZD48dGQ+MDwvdGQ+PHRkPjA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkRhdGEgdm9sdW1lIDxpIGNsYXNzPSJmYSBmYS1xdWVzdGlvbi1jaXJjbGUgdGV4dC1tdXRlZCIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9InRvcCIgdGl0bGU9IlRvdGFsIGRvd25sb2FkIHZvbHVtZS4iIGRhdGEtb3JpZ2luYWwtdGl0bGU9IlRvdGFsIGRvd25sb2FkIHZvbHVtZS4iPjwvaT48L3RkPjx0ZD4wIEJ5dGVzPC90ZD48dGQ+MCBCeXRlczwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+VW5pcXVlIHZpZXdzIDxpIGNsYXNzPSJmYSBmYS1xdWVzdGlvbi1jaXJjbGUgdGV4dC1tdXRlZCIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9InRvcCIgdGl0bGU9IlZpZXdzIGluIG9uZSBob3VyIHVzZXItc2Vzc2lvbnMgYXJlIGNvdW50ZWQgb25seSBvbmNlLiIgZGF0YS1vcmlnaW5hbC10aXRsZT0iVmlld3MgaW4gb25lIGhvdXIgdXNlci1zZXNzaW9ucyBhcmUgY291bnRlZCBvbmx5IG9uY2UuIj48L2k+PC90ZD48dGQ+MTI8L3RkPjx0ZD4xMjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+VW5pcXVlIGRvd25sb2FkcyA8aSBjbGFzcz0iZmEgZmEtcXVlc3Rpb24tY2lyY2xlIHRleHQtbXV0ZWQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0b29sdGlwIGRhdGEtcGxhY2VtZW50PSJ0b3AiIHRpdGxlPSJEb3dubG9hZHMgaW4gb25lIGhvdXIgdXNlci1zZXNzaW9ucyBhcmUgY291bnRlZCBvbmx5IG9uY2UuIiBkYXRhLW9yaWdpbmFsLXRpdGxlPSJEb3dubG9hZHMgaW4gb25lIGhvdXIgdXNlci1zZXNzaW9ucyBhcmUgY291bnRlZCBvbmx5IG9uY2UuIj48L2k+PC90ZD48dGQ+MDwvdGQ+PHRkPjA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgIDwvdGFibGU+CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9oZWxwLnplbm9kby5vcmcvI3N0YXRpc3RpY3MiPk1vcmUgaW5mbyBvbiBob3cgc3RhdHMgYXJlIGNvbGxlY3RlZC48L2E+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBBbHRtZXRyaWMgLS0+CiAgCjxkaXYgY2xhc3M9ImFsdG1ldHJpYy1lbWJlZCIgZGF0YS1iYWRnZS10eXBlPSJkb251dCIgZGF0YS1iYWRnZS1kZXRhaWxzPSJsZWZ0IiBkYXRhLWhpZGUtbm8tbWVudGlvbnM9InRydWUiIGRhdGEtZG9pPSIxMC41MjgxL3plbm9kby4yMTQzMCI+PC9kaXY+CgogICAgICA8L2Rpdj4KPGRpdiBjbGFzcz0id2VsbCBtZXRhZGF0YSI+CiAgCiAgICA8c21hbGwgY2xhc3M9InRleHQtbXV0ZWQiPkF2YWlsYWJsZSBpbjwvc21hbGw+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGF0YWNpdGUvRGF0YUNpdGUtT1JDSUQvdHJlZS92LjEuMCI+PGltZyBzcmM9Ii9zdGF0aWMvaW1nL2dpdGh1Yi5wbmciIGNsYXNzPSJpbWctdGh1bWJuYWlsIiB3aWR0aD0iMTAwJSIgLz48L2E+CjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ3ZWxsIG1ldGFkYXRhIj48ZGw+CiAgICA8ZHQ+UHVibGljYXRpb24gZGF0ZTo8L2R0PgogICAgPGRkPkp1bHkgMjUsIDIwMTU8L2RkPgogICAgPGR0PkRPSTo8L2R0PgogICAgPGRkPgogICAgICA8c3BhbiBjbGFzcz0iZ2V0LWJhZGdlIiBkYXRhLXRvZ2dsZT0idG9vbHQgIGlwIiBkYXRhLXBsYWNlbWVudD0iYm90dG9tIgogICAgICAgICAgICB0aXRsZT0iR2V0IHRoZSBET0kgYmFkZ2UhIj4KICAgICAgICA8aW1nIGRhdGEtdG9nZ2xlPSJtb2RhbCIgZGF0YS10YXJnZXQ9IltkYXRhLW1vZGFsPScxMC41MjgxL3plbm9kby4yMTQzMCddIgogICAgICAgICAgICAgIHNyYz0iL2JhZGdlL0RPSS8xMC41MjgxL3plbm9kby4yMTQzMC5zdmciIGFsdD0iMTAuNTI4MS96ZW5vZG8uMjE0MzAiPgogICAgICAgIDwvaW1nPgogICAgICA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgYmFkZ2UtbW9kYWwiIGRhdGEtbW9kYWw9IjEwLjUyODEvemVub2RvLjIxNDMwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciPgogICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgIDxoND5aZW5vZG8gRE9JIEJhZGdlPC9oND4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgIDxoND4KICAgICAgICA8c21hbGw+TWFya2Rvd248L3NtYWxsPgogICAgPC9oND4KICAgIDxoND4KICAgICAgICA8cHJlPlshW0RPSV0oaHR0cHM6Ly96ZW5vZG8ub3JnL2JhZGdlL0RPSS8xMC41MjgxL3plbm9kby4yMTQzMC5zdmcpXShodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjE0MzApPC9wcmU+CiAgICA8L2g0PgogICAgPGg0PgogICAgICAgIDxzbWFsbD5yZVN0cnVjdGVkVGV4dDwvc21hbGw+CiAgICA8L2g0PgogICAgPGg0PgogICAgICAgIDxwcmU+Li4gaW1hZ2U6OiBodHRwczovL3plbm9kby5vcmcvYmFkZ2UvRE9JLzEwLjUyODEvemVub2RvLjIxNDMwLnN2ZwogICA6dGFyZ2V0OiBodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjE0MzA8L3ByZT4KICAgIDwvaDQ+CiAgICA8aDQ+CiAgICAgICAgPHNtYWxsPkhUTUw8L3NtYWxsPgogICAgPC9oND4KICAgIDxoND4KICAgICAgPHByZT4mbHQ7YSBocmVmPSJodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjE0MzAiJmd0OyZsdDtpbWcgc3JjPSJodHRwczovL3plbm9kby5vcmcvYmFkZ2UvRE9JLzEwLjUyODEvemVub2RvLjIxNDMwLnN2ZyIgYWx0PSJET0kiJmd0OyZsdDsvYSZndDs8L3ByZT4KICAgIDwvaDQ+CgogICAgPGg0PgogICAgICAgIDxzbWFsbD5JbWFnZSBVUkw8L3NtYWxsPgogICAgPC9oND4KICAgIDxoND4KICAgICAgPHByZT5odHRwczovL3plbm9kby5vcmcvYmFkZ2UvRE9JLzEwLjUyODEvemVub2RvLjIxNDMwLnN2ZzwvcHJlPgogICAgPC9oND4KCiAgICA8aDQ+CiAgICAgICAgPHNtYWxsPlRhcmdldCBVUkw8L3NtYWxsPgogICAgPC9oND4KICAgIDxoND4KICAgICAgPHByZT5odHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjE0MzA8L3ByZT4KICAgIDwvaDQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kZD4KICAgIDxkdD5LZXl3b3JkKHMpOjwvZHQ+CiAgICA8ZGQ+CiAgICAgIAogICAgICA8YSBjbGFzcz0ibGFiZWwtbGluayIgaHJlZj0iL3NlYXJjaD9xPWtleXdvcmRzJTNBJTIyb3JjaWQlMjIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1kZWZhdWx0Ij5vcmNpZDwvc3Bhbj4KICAgICAgPC9hPgogICAgICAKICAgICAgPGEgY2xhc3M9ImxhYmVsLWxpbmsiIGhyZWY9Ii9zZWFyY2g/cT1rZXl3b3JkcyUzQSUyMmRhdGFjaXRlJTIyIj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtZGVmYXVsdCI+ZGF0YWNpdGU8L3NwYW4+CiAgICAgIDwvYT4KICAgICAgCiAgICAgIDxhIGNsYXNzPSJsYWJlbC1saW5rIiBocmVmPSIvc2VhcmNoP3E9a2V5d29yZHMlM0ElMjJydWJ5JTIyIj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtZGVmYXVsdCI+cnVieTwvc3Bhbj4KICAgICAgPC9hPgogICAgPC9kZD4KCiAgCiAgICA8ZHQ+R3JhbnRzOjwvZHQ+CiAgICA8ZGQ+CiAgICAgICAgPHU+RXVyb3BlYW4gQ29tbWlzc2lvbjo8L3U+PGJyIC8+CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPgogICAgICAgICAgT0RJTiAtIE9SQ0lEIGFuZCBEQVRBQ0lURSBJbnRlcm9wZXJhYmlsaXR5IE5ldHdvcmsgKDMxMjc4OCkgCiAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2RkPgogICAgPGR0PlJlbGF0ZWQgaWRlbnRpZmllcnM6PC9kdD4KICAgIDxkZD5TdXBwbGVtZW50IHRvOjxiciAvPgogICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGF0YWNpdGUvRGF0YUNpdGUtT1JDSUQvdHJlZS92LjEuMCI+aHR0cHM6Ly9naXRodWIuY29tL2RhdGFjaXRlL0RhdGFDaXRlLU9SQ0lEL3RyZWUvdi4xLjA8L2E+CiAgICA8L2RkPgogICAgPGR0PkxpY2Vuc2UgKGZvciBmaWxlcyk6PC9kdD4KICAgIDxkZD48YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIj48aSBjbGFzcz0iZmEgZmEtZXh0ZXJuYWwtbGluayI+PC9pPiBNSVQgTGljZW5zZTwvYT48L2RkPgogIDwvZGw+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ3ZWxsIj48aDQ+U2hhcmU8L2g0PgogIDwhLS0gQWRkVGhpcyBCdXR0b24gQkVHSU4gLS0+CiAgPGRpdiBjbGFzcz0iYWRkdGhpc190b29sYm94IGFkZHRoaXNfZGVmYXVsdF9zdHlsZSBhZGR0aGlzXzMyeDMyX3N0eWxlIiBhZGR0aGlzOnVybD0iaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjIxNDMwIj4KICA8YSBjbGFzcz0iYWRkdGhpc19idXR0b25fbWVuZGVsZXkiPjwvYT4KICA8YSBjbGFzcz0iYWRkdGhpc19idXR0b25fY2l0ZXVsaWtlIj48L2E+CiAgPGEgY2xhc3M9ImFkZHRoaXNfYnV0dG9uX3R3aXR0ZXIiPjwvYT4KICA8YSBjbGFzcz0iYWRkdGhpc19idXR0b25fcHJlZmVycmVkXzEiPjwvYT4KICA8YSBjbGFzcz0iYWRkdGhpc19idXR0b25fcHJlZmVycmVkXzIiPjwvYT4KICA8YSBjbGFzcz0iYWRkdGhpc19idXR0b25fY29tcGFjdCI+PC9hPgogIDwvZGl2PgogIDwhLS0gQWRkVGhpcyBCdXR0b24gRU5EIC0tPgogIDxoND5DaXRlIGFzPC9oND4KICA8ZGl2IGlkPSdpbnZlbmlvLWNzbCc+CiAgICAKICAgIDxpbnZlbmlvLWNzbAogICAgICAgIG5nLWluaXQ9InZtLmNpdGF0aW9uUmVzdWx0ID0gJ01hcnRpbiBGZW5uZXIsIC4sIEthcmwgSm9uYXRoYW4gV2FyZCwgLiwgR3VkbXVuZHVyIEEuIFRob3Jpc3NvbiwgLiwgJmFtcDsgUm9iZXJ0IFBldGVycywgLiAoMjAxNSwgSnVseSAyNSkuIERhdGFDaXRlLU9SQ0lEOiAxLjAuIFplbm9kby4gaHR0cDovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjE0MzAnIgogICAgPgogICAgICA8aW52ZW5pby1jc2wtY2l0ZXByb2MKICAgICAgIGVuZHBvaW50PSIvYXBpL3JlY29yZHMvMjE0MzAiCiAgICAgICB0ZW1wbGF0ZT0iL3N0YXRpYy90ZW1wbGF0ZXMvaW52ZW5pb19jc2wvY2l0ZXByb2MuaHRtbCI+PC9pbnZlbmlvLWNzbC1jaXRlcHJvYz4KICAgICAgPGludmVuaW8tY3NsLWVycm9yCiAgICAgICB0ZW1wbGF0ZT0iL3N0YXRpYy9ub2RlX21vZHVsZXMvaW52ZW5pby1jc2wtanMvZGlzdC90ZW1wbGF0ZXMvZXJyb3IuaHRtbCI+PC9pbnZlbmlvLWNzbC1lcnJvcj4KICAgICAgPGludmVuaW8tY3NsLWxvYWRpbmcKICAgICAgIHRlbXBsYXRlPSIvc3RhdGljL25vZGVfbW9kdWxlcy9pbnZlbmlvLWNzbC1qcy9kaXN0L3RlbXBsYXRlcy9sb2FkaW5nLmh0bWwiPjwvaW52ZW5pby1jc2wtbG9hZGluZz4KICAgICAgPGludmVuaW8tY3NsLXR5cGVhaGVhZAogICAgICAgbGF6eT0idHJ1ZSIKICAgICAgIHBsYWNlaG9sZGVyPSJTdGFydCB0eXBpbmcgYSBjaXRhdGlvbiBzdHlsZS4uLiIKICAgICAgIHJlbW90ZT0iL2FwaS9jc2wvc3R5bGVzIgogICAgICAgdGVtcGxhdGU9Ii9zdGF0aWMvbm9kZV9tb2R1bGVzL2ludmVuaW8tY3NsLWpzL2Rpc3QvdGVtcGxhdGVzL3R5cGVhaGVhZC5odG1sIgogICAgICAgaXRlbS10ZW1wbGF0ZT0iL3N0YXRpYy90ZW1wbGF0ZXMvaW52ZW5pb19jc2wvaXRlbS5odG1sIj4KICAgICAgPC9pbnZlbmlvLWNzbC10eXBlYWhlYWQ+CiAgICA8L2ludmVuaW8tY3NsPgogIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0id2VsbCI+PGg0PkV4cG9ydDwvaDQ+Cjx1bCBjbGFzcz0ibGlzdC1pbmxpbmUiPgogIDxsaT48YSBocmVmPSIvcmVjb3JkLzIxNDMwL2V4cG9ydC9oeCI+QmliVGVYPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9Ii9yZWNvcmQvMjE0MzAvZXhwb3J0L2NzbCI+Q1NMPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9Ii9yZWNvcmQvMjE0MzAvZXhwb3J0L2RjaXRlNCI+RGF0YUNpdGU8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iL3JlY29yZC8yMTQzMC9leHBvcnQveGQiPkR1YmxpbiBDb3JlPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9Ii9yZWNvcmQvMjE0MzAvZXhwb3J0L2pzb24iPkpTT048L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iL3JlY29yZC8yMTQzMC9leHBvcnQvc2NoZW1hb3JnX2pzb25sZCI+SlNPTi1MRDwvYT48L2xpPgogIDxsaT48YSBocmVmPSIvcmVjb3JkLzIxNDMwL2V4cG9ydC94bSI+TUFSQ1hNTDwvYT48L2xpPgogIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5tZW5kZWxleS5jb20vaW1wb3J0Lz91cmw9aHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8yMTQzMCI+PGkgY2xhc3M9ImZhIGZhLWV4dGVybmFsLWxpbmsiPjwvaT4gTWVuZGVsZXk8L2E+PC9saT4KPC91bD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+Cjxmb290ZXIgY2xhc3M9ImZvb3RlciI+CiAgPGRpdiBjbGFzcz0ibWVudS13cmFwcGVyIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InJvdyBmb290ZXItbWVudSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC04Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0yIGNvbC1tZC0yIj4KICAgICAgICAgICAgICA8aDU+QWJvdXQ8L2g1PgogICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCI+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2Fib3V0Lnplbm9kby5vcmciPkFib3V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2Fib3V0Lnplbm9kby5vcmcvcG9saWNpZXMiPlBvbGljaWVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2Fib3V0Lnplbm9kby5vcmcvaW5mcmFzdHJ1Y3R1cmUiPkluZnJhc3RydWN0dXJlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2Fib3V0Lnplbm9kby5vcmcvcHJpbmNpcGxlcyI+UHJpbmNpcGxlczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9hYm91dC56ZW5vZG8ub3JnL2NvbnRhY3QiPkNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTIgY29sLW1kLTIiPgogICAgICAgICAgICAgIDxoNT5CbG9nPC9oNT4KICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9ibG9nLnplbm9kby5vcmciPkJsb2c8L2E+PC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTIgY29sLW1kLTIiPgogICAgICAgICAgICAgIDxoNT5IZWxwPC9oNT4KICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9oZWxwLnplbm9kby5vcmciPkZBUTwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9oZWxwLnplbm9kby5vcmcvZmVhdHVyZXMiPkZlYXR1cmVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2hlbHAuemVub2RvLm9yZy93aGF0c25ldyI+V2hhdCdzIE5ldzwvYT48L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMiBjb2wtbWQtMiI+CiAgICAgICAgICAgICAgPGg1PkRldmVsb3BlcnM8L2g1PgogICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCI+CiAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLnplbm9kby5vcmciPlJFU1QgQVBJPC9hPjwvbGk+CiAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLnplbm9kby5vcmcjb2FpLXBtaCI+T0FJLVBNSDwvYT48L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMiBjb2wtbWQtMiI+CiAgICAgICAgICAgICAgPGg1PkNvbnRyaWJ1dGU8L2g1PgogICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCI+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vemVub2RvL3plbm9kbyI+PGkgY2xhc3M9ImZhIGZhLWV4dGVybmFsLWxpbmsiPjwvaT4gR2l0SHViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2RvbmF0ZSI+PGkgY2xhc3M9ImZhIGZhLWV4dGVybmFsLWxpbmsiPjwvaT4gRG9uYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTQiPgogICAgICAgICAgPGRpdiBjbGFzcz0icHVsbC1yaWdodC1tZCB0ZXh0LWNlbnRlci1zbSB0ZXh0LWNlbnRlci14cyI+CiAgICAgICAgICAgIDxoNT5GdW5kZWQgYnk8L2g1PgogICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3QtaW5saW5lIj4KICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2hvbWUuY2VybiI+PGltZyBzcmM9Ii9zdGF0aWMvaW1nL2Nlcm4ucG5nIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIC8+PC9hPjwvbGk+CiAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmFpcmUuZXUiPjxpbWcgc3JjPSIvc3RhdGljL2ltZy9vcGVuYWlyZS5wbmciIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgLz48L2E+PC9saT4KICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9lYy5ldXJvcGEuZXUvcHJvZ3JhbW1lcy9ob3Jpem9uMjAyMC8iPjxpbWcgc3JjPSIvc3RhdGljL2ltZy9ldS5wbmciIHdpZHRoPSI4OCIgaGVpZ2h0PSI2MCIgLz48L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTYgY29sLXNtLXB1c2gtNiI+CiAgICAgICAgPGRpdiBjbGFzcz0icHVsbC1yaWdodC1zbSB0ZXh0LWNlbnRlci14cyI+CiAgICAgICAgICA8dWwgY2xhc3M9Imxpc3QtaW5saW5lIj4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLnplbm9kby5vcmcvIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9hYm91dC56ZW5vZG8ub3JnL3ByaXZhY3ktcG9saWN5Ij5Qcml2YWN5IHBvbGljeTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2Fib3V0Lnplbm9kby5vcmcvdGVybXMiPlRlcm1zIG9mIFVzZTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL3N1cHBvcnQiPlN1cHBvcnQ8L2E+PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTYgY29sLXNtLXB1bGwtNiB0ZXh0LWNlbnRlci14cyI+CiAgICAgICAgPHA+UG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vaW5mb3JtYXRpb24tdGVjaG5vbG9neS53ZWIuY2Vybi5jaC9hYm91dC9jb21wdXRlci1jZW50cmUiPkNFUk4gRGF0YSBDZW50cmU8L2E+ICZhbXA7IDxhIGhyZWY9Imh0dHA6Ly9pbnZlbmlvc29mdHdhcmUub3JnIj5JbnZlbmlvPC9hPjwvcD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9mb290ZXI+CjxzY3JpcHQgc3JjPSIvc3RhdGljL2dlbi96ZW5vZG8uNzA1YmViYTguanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdC9NYXRoSmF4LmpzP2NvbmZpZz1UZVgtQU1TLU1NTF9IVE1Mb3JNTUwiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL3N0YXRpYy9nZW4vemVub2RvLnNlYXJjaC42NTY2MjE4MC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgYWRkdGhpc19jb25maWcgPSB7ImRhdGFfdHJhY2tfYWRkcmVzc2JhciI6IHRydWV9Ozwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgLy8gQm9vdHN0cmFwIHRoZSBJbnZlbmlvIENTTCBGb3JtYXR0ZXIgYW5kIGludmVuaW8tc2VhcmNoLWpzCiAgcmVxdWlyZShbCiAgICAianF1ZXJ5IiwKICAgICd0eXBlYWhlYWQuanMnLAogICAgJ2Jsb29kaG91bmQnLAogICAgIm5vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIiLAogICAgIm5vZGVfbW9kdWxlcy9pbnZlbmlvLWNzbC1qcy9kaXN0L2ludmVuaW8tY3NsLWpzIiwKICAgICJub2RlX21vZHVsZXMvaW52ZW5pby1zZWFyY2gtanMvZGlzdC9pbnZlbmlvLXNlYXJjaC1qcyIsCiAgICAianMvemVub2RvL21vZHVsZSIKICAgIF0sIGZ1bmN0aW9uKHR5cGVhaGVhZCwgQmxvb2Rob3VuZCkgewogICAgICBhbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoKICAgICAgICBhbmd1bGFyLmJvb3RzdHJhcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoLWNpdGF0aW9ucyIpLCBbCiAgICAgICAgICAgICdpbnZlbmlvU2VhcmNoJywKICAgICAgICAgICAgJ3plbm9kby5maWx0ZXJzJwogICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIGFuZ3VsYXIuYm9vdHN0cmFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnZlbmlvLWNzbCIpLCBbCiAgICAgICAgICAgICdpbnZlbmlvQ3NsJywKICAgICAgICAgIF0KICAgICAgICApOwogICAgICB9KTsKICAgIH0KICApOwogIHJlcXVpcmUoWwogICAgImpxdWVyeSIsCiAgICAianMvemVub2RvL2Z1bmN0aW9ucyIsCiAgICBdLCBmdW5jdGlvbigkLCByZWNvcmRDb21tdW5pdHlDdXJhdGUpIHsKICAgICAgJChmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgiI3JlY29yZENvbW11bml0eUN1cmF0aW9uIC5idG4iKS5jbGljayhyZWNvcmRDb21tdW5pdHlDdXJhdGUpOwogICAgICAgICQoJy5wcmV2aWV3LWxpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgJCgnI3ByZXZpZXcnKS5zaG93KCk7CiAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoJChldmVudC50YXJnZXQpLmRhdGEoJ2ZpbGVuYW1lJykpOwogICAgICAgICAgJCgnI3ByZXZpZXctaWZyYW1lJykuYXR0cigic3JjIiwiL3JlY29yZC8yMTQzMC9wcmV2aWV3LyIgKyBmaWxlbmFtZSk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogICk7CiAgJChmdW5jdGlvbiAoKSB7CiAgICAkKCdbZGF0YS10b2dnbGU9InRvb2x0aXAiXScpLnRvb2x0aXAoKTsKICB9KTsKPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vczcuYWRkdGhpcy5jb20vanMvMzAwL2FkZHRoaXNfd2lkZ2V0LmpzI3B1YmlkPXJhLTUxMzdhZmY2NmFkOWMyYTEiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL2QxYnhoOHVhczFtbnc3LmNsb3VkZnJvbnQubmV0L2Fzc2V0cy9lbWJlZC5qcyc+PC9zY3JpcHQ+Cgo8c2NyaXB0IHR5cGU9J2FwcGxpY2F0aW9uL2xkK2pzb24nPnsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnLyIsIAogICJAaWQiOiAiaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjIxNDMwIiwgCiAgIkB0eXBlIjogIlNvZnR3YXJlU291cmNlQ29kZSIsIAogICJjb2RlUmVwb3NpdG9yeSI6ICJodHRwczovL2dpdGh1Yi5jb20vZGF0YWNpdGUvRGF0YUNpdGUtT1JDSUQvdHJlZS92LjEuMCIsIAogICJjcmVhdG9yIjogWwogICAgewogICAgICAiQHR5cGUiOiAiUGVyc29uIiwgCiAgICAgICJhZmZpbGlhdGlvbiI6ICJPUkNJRCBFVSIsIAogICAgICAibmFtZSI6ICJNYXJ0aW4gRmVubmVyIgogICAgfSwgCiAgICB7CiAgICAgICJAdHlwZSI6ICJQZXJzb24iLCAKICAgICAgImFmZmlsaWF0aW9uIjogIkNyb3NzUmVmIiwgCiAgICAgICJuYW1lIjogIkthcmwgSm9uYXRoYW4gV2FyZCIKICAgIH0sIAogICAgewogICAgICAiQHR5cGUiOiAiUGVyc29uIiwgCiAgICAgICJhZmZpbGlhdGlvbiI6ICJPUkNJRCBFVSIsIAogICAgICAibmFtZSI6ICJHdWRtdW5kdXIgQS4gVGhvcmlzc29uIgogICAgfSwgCiAgICB7CiAgICAgICJAdHlwZSI6ICJQZXJzb24iLCAKICAgICAgImFmZmlsaWF0aW9uIjogIk9SQ0lEIiwgCiAgICAgICJuYW1lIjogIlJvYmVydCBQZXRlcnMiCiAgICB9CiAgXSwgCiAgImRhdGVQdWJsaXNoZWQiOiAiMjAxNS0wNy0yNSIsIAogICJkZXNjcmlwdGlvbiI6ICI8cD5EYXRhQ2l0ZS1PUkNJRCBpcyBhIFJ1YnkgU2luYXRyYSB3ZWIgYXBwbGljYXRpb24gdG8gYWxsb3cgdXNlcnMgdG8gY2xhaW0gRGF0YUNpdGUgRE9JcyBmb3IgdGhlaXIgT1JDSUQgcHJvZmlsZS4mbmJzcDsxLjAgd2FzIHJlbGVhc2VkIG9uIEp1bHkgMjUsIDIwMTUgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6PC9wPlxuXG48dWw+XG5cdDxsaT51c2UgRU5WIHZhcmlhYmxlcyBhbmQgZG90ZW52ICgjMSk8L2xpPlxuXHQ8bGk+dXBkYXRlZCBWYWdyYW50ZmlsZSBhbmQgQ2hlZiBjb29rYm9va3MgKCMyKTwvbGk+XG5cdDxsaT51c2Ugc2VudHJ5IGZvciBlcnJvciB0cmFja2luZyAoIzQpPC9saT5cblx0PGxpPnJlbW92ZSBvYnNvbGV0ZSBjdWN1bWJlciB0ZXN0cyAoIzUpPC9saT5cbjwvdWw+IiwgCiAgImlkZW50aWZpZXIiOiAiaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjIxNDMwIiwgCiAgImtleXdvcmRzIjogWwogICAgIm9yY2lkIiwgCiAgICAiZGF0YWNpdGUiLCAKICAgICJydWJ5IgogIF0sIAogICJsaWNlbnNlIjogImh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIiwgCiAgIm5hbWUiOiAiRGF0YUNpdGUtT1JDSUQ6IDEuMCIsIAogICJ1cmwiOiAiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8yMTQzMCIKfTwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgX3BhcSA9IF9wYXEgfHwgW107Cl9wYXEucHVzaChbInNldERvbWFpbnMiLCBbIiouemVub2RvLm9yZyIsIiouemVub2RvLmNlcm4uY2giLCIqLnplbm9kby5ldSIsIiouemVub2RvLm5ldCJdXSk7Cl9wYXEucHVzaChbInRyYWNrUGFnZVZpZXciXSk7Cl9wYXEucHVzaChbImVuYWJsZUxpbmtUcmFja2luZyJdKTsKCihmdW5jdGlvbigpIHsKICB2YXIgdT0oKCJodHRwczoiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/ICJodHRwcyIgOiAiaHR0cCIpICsgIjovL3Bpd2lrLndlYi5jZXJuLmNoLyI7CiAgX3BhcS5wdXNoKFsic2V0VHJhY2tlclVybCIsIHUrInBpd2lrLnBocCJdKTsKICBfcGFxLnB1c2goWyJzZXRTaXRlSWQiLCAiNTciXSk7CiAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTsgZy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiOwogIGcuZGVmZXI9dHJ1ZTsgZy5hc3luYz10cnVlOyBnLnNyYz11KyJwaXdpay5qcyI7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTsKfSkoKTsKPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+
100
+ http_version:
101
+ recorded_at: Tue, 24 Jul 2018 09:15:10 GMT
102
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,28 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://38.100.138.135:8000/api/handles/10.5281/ZENODO.21430?index=1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.1; +https://github.com/datacite/maremma)
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: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json;charset=UTF-8
21
+ Vary:
22
+ - Accept-Encoding
23
+ body:
24
+ encoding: ASCII-8BIT
25
+ string: '{"responseCode":1,"handle":"10.5281/ZENODO.21430","values":[{"index":1,"type":"URL","data":{"format":"string","value":"https://zenodo.org/record/21430"},"ttl":86400,"timestamp":"2018-05-04T04:00:33Z"}]}'
26
+ http_version:
27
+ recorded_at: Tue, 24 Jul 2018 09:30:16 GMT
28
+ recorded_with: VCR 3.0.3
data/spec/maremma_spec.rb CHANGED
@@ -660,4 +660,20 @@ describe Maremma do
660
660
  expect(subject.set_request_headers(url, options)["Host"]).to eq("example.org")
661
661
  end
662
662
  end
663
+
664
+ context 'ssl verify', vcr: true do
665
+ it 'default' do
666
+ url = "https://doi.org/10.5281/ZENODO.21430"
667
+ response = subject.get(url)
668
+ expect(response.status).to eq(200)
669
+ end
670
+
671
+ it 'self-signed' do
672
+ url = "https://38.100.138.135:8000/api/handles/10.5281/ZENODO.21430?index=1"
673
+ options = { ssl_self_signed: true}
674
+ response = subject.get(url, options)
675
+ expect(response.status).to eq(200)
676
+ expect(response.body.dig("data", "values", 0, "data", "value")).to eq("https://zenodo.org/record/21430")
677
+ end
678
+ end
663
679
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maremma
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.12
4
+ version: '4.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-04 00:00:00.000000000 Z
11
+ date: 2018-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -319,6 +319,8 @@ files:
319
319
  - spec/fixtures/vcr_cassettes/Maremma/content_negotiation/returns_content_as_bibtex.yml
320
320
  - spec/fixtures/vcr_cassettes/Maremma/get/get_json_with_params.yml
321
321
  - spec/fixtures/vcr_cassettes/Maremma/link_headers/parses_link_headers.yml
322
+ - spec/fixtures/vcr_cassettes/Maremma/ssl_verify/default.yml
323
+ - spec/fixtures/vcr_cassettes/Maremma/ssl_verify/self-signed.yml
322
324
  - spec/maremma_spec.rb
323
325
  - spec/spec_helper.rb
324
326
  homepage: https://github.com/datacite/maremma