aylien_text_api 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +3 -0
- data/README.md +12 -10
- data/aylien_text_api.gemspec +3 -3
- data/lib/aylien_text_api/client.rb +30 -93
- data/lib/aylien_text_api/configuration.rb +2 -4
- data/lib/aylien_text_api/version.rb +1 -1
- data/spec/fixtures/aylien_text_api/client/{microformats_with_invalid_client.yml → elsa_with_invalid_client.yml} +10 -8
- data/spec/fixtures/aylien_text_api/client/{related_with_invalid_params.yml → elsa_with_invalid_params.yml} +15 -24
- data/spec/fixtures/aylien_text_api/client/elsa_with_text.yml +98 -0
- data/spec/fixtures/aylien_text_api/client/{related_with_unauthenticated_client.yml → elsa_with_unauthenticated_client.yml} +10 -8
- data/spec/fixtures/aylien_text_api/client/elsa_with_valid_url.yml +47 -0
- data/spec/fixtures/aylien_text_api/client/elsa_with_value_as_text.yml +92 -0
- data/spec/fixtures/aylien_text_api/client/elsa_with_value_as_valid_url.yml +53 -0
- data/spec/lib/aylien_text_api/client_spec.rb +1 -3
- data/spec/lib/aylien_text_api/elsa.rb +81 -0
- metadata +14 -152
- data/spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml +0 -62
- data/spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml +0 -42
- data/spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml +0 -84
- data/spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml +0 -84
- data/spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml +0 -38
- data/spec/fixtures/aylien_text_api/client/related_with_phrase.yml +0 -112
- data/spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml +0 -112
- data/spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml +0 -62
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml +0 -38
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml +0 -57
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml +0 -53
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml +0 -42
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml +0 -97
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml +0 -57
- data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml +0 -97
- data/spec/lib/aylien_text_api/microformats.rb +0 -66
- data/spec/lib/aylien_text_api/related.rb +0 -80
- data/spec/lib/aylien_text_api/unsupervised_classify.rb +0 -87
@@ -2,17 +2,17 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.aylien.com/api/v1/
|
5
|
+
uri: https://api.aylien.com/api/v1/elsa
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
|
-
string:
|
8
|
+
string: text=Barack+Hussein+Obama+II+is+the+44th+and+current%0A++++++President+of+the+United+States%2C+and+the+first%0A++++++African+American+to+hold+the+office.
|
9
9
|
headers:
|
10
10
|
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
12
|
Accept:
|
13
13
|
- "*/*"
|
14
14
|
User-Agent:
|
15
|
-
- Aylien Text API Ruby Gem 0.
|
15
|
+
- Aylien Text API Ruby Gem 0.7.0
|
16
16
|
Content-Type:
|
17
17
|
- application/x-www-form-urlencoded
|
18
18
|
X-Aylien-Textapi-Application-Id:
|
@@ -25,18 +25,20 @@ http_interactions:
|
|
25
25
|
message: Forbidden
|
26
26
|
headers:
|
27
27
|
Server:
|
28
|
-
- openresty/1.
|
28
|
+
- openresty/1.13.6.1
|
29
29
|
Date:
|
30
|
-
- Thu,
|
30
|
+
- Thu, 31 May 2018 11:03:03 GMT
|
31
31
|
Content-Type:
|
32
32
|
- text/plain; charset=us-ascii
|
33
33
|
Transfer-Encoding:
|
34
34
|
- chunked
|
35
|
-
|
36
|
-
-
|
35
|
+
Via:
|
36
|
+
- 1.1 google
|
37
|
+
Alt-Svc:
|
38
|
+
- clear
|
37
39
|
body:
|
38
40
|
encoding: UTF-8
|
39
41
|
string: Authentication failed
|
40
42
|
http_version:
|
41
|
-
recorded_at: Thu,
|
43
|
+
recorded_at: Thu, 31 May 2018 11:03:03 GMT
|
42
44
|
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,47 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.aylien.com/api/v1/elsa
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: url=http%3A%2F%2Fwww.businessinsider.com%2Fcarl-icahn-open-letter-to-apple-2014-1
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Aylien Text API Ruby Gem 0.7.0
|
16
|
+
Content-Type:
|
17
|
+
- application/x-www-form-urlencoded
|
18
|
+
X-Aylien-Textapi-Application-Id:
|
19
|
+
- "<PASSWORD>"
|
20
|
+
X-Aylien-Textapi-Application-Key:
|
21
|
+
- "<PASSWORD>"
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 200
|
25
|
+
message: ''
|
26
|
+
headers:
|
27
|
+
Server:
|
28
|
+
- openresty/1.13.6.1
|
29
|
+
Date:
|
30
|
+
- Thu, 31 May 2018 11:03:08 GMT
|
31
|
+
Content-Type:
|
32
|
+
- application/json;charset=UTF-8
|
33
|
+
Content-Length:
|
34
|
+
- '54190'
|
35
|
+
Access-Control-Allow-Origin:
|
36
|
+
- "*"
|
37
|
+
Via:
|
38
|
+
- 1.1 google
|
39
|
+
Alt-Svc:
|
40
|
+
- clear
|
41
|
+
body:
|
42
|
+
encoding: ASCII-8BIT
|
43
|
+
string: !binary |-
|
44
|
+
ewogICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyAkNTAwIE1pbGxpb24gTU9SRSBPZiBBcHBsZSwgUmVsZWFzZXMgT3BlbiBMZXR0ZXIgVG8gVGhlIENvbXBhbnlcbkNhcmwgSWNhaG4gY29udGludWVkIGhpcyBhc3NhdWx0IG9uIEFwcGxlIHRvZGF5LlxyXG5IZSBhbm5vdW5jZWQgb24gVHdpdHRlciB0aGF0IGhlIGJvdWdodCBhbm90aGVyICQ1MDAgbWlsbGlvbiB3b3J0aCBvZiBBcHBsZSBzdG9jaywgYnJpbmdpbmcgaGlzIHRvdGFsIHRvICQzLjYgYmlsbGlvbi5cclxuSGUgYWxzbyB3cm90ZSBhbiBvcGVuIGxldHRlciB0byBBcHBsZSBzaGFyZWhvbGRlcnMgZXhwbGFpbmluZyB3aHkgaGUgdGhpbmtzIEFwcGxlIG5lZWRzIHRvIHJhbXAgdXAgaXRzIHNoYXJlIGJ1eWJhY2tzLiBIZSBiZWxpZXZlcyBhIHNoYXJlIGJ1eWJhY2sgd291bGQgZWFzaWx5IGdvb3NlIHRoZSBjb21wYW55J3Mgc2hhcmUgcHJpY2UuwqBcclxuSGVyZSdzIHRoZSB0d2VldDpcclxuXHJcbkJvdWdodCBhbm90aGVyICQ1MDBtaWwgb2YgJEFBUEwgdGRheSwgYnJpbmdpbmcgb3VyIHRvdGFsIHRvICQzLjYgYmlsbGlvbi4gSWYgYm9hcmQgZG9lc27igJl0IHNlZSBBQVBM4oCZcyDigJhubyBicmFpbmVy4oCZIHZhbHVlIHdlIHN1cmUgZG8uXHJcbuKAlCBDYXJsIEljYWhuIChAQ2FybF9DX0ljYWhuKSBKYW51YXJ5IDIzLCAyMDE0XHJcblxyXG5BbmQgaGVyZSdzIHRoZSBsZXR0ZXI6XHJcbkRlYXIgRmVsbG93IEFwcGxlIFNoYXJlaG9sZGVycyxcclxuT3ZlciB0aGUgY291cnNlIG9mIG15IGxvbmcgY2FyZWVyIGFzIGFuIGludmVzdG9yIGFuZCBhcyBDaGFpcm1hbiBvZiBJY2FobiBFbnRlcnByaXNlcywgb3VyIGJlc3QgcGVyZm9ybWluZyBpbnZlc3RtZW50cyByZXN1bHQgZnJvbSBvcHBvcnR1bml0aWVzIHRoYXQgd2UgbGlrZSB0byBjYWxsIFwibm8gYnJhaW5lcnMuXCIgUmVjZW50IGV4YW1wbGVzIG9mIHN1Y2gg4oCcbm8gYnJhaW5lcnPigJ0gaGF2ZSBiZWVuIG91ciBpbnZlc3RtZW50cyBpbiBOZXRmbGl4LCBIYWluIENlbGVzdGlhbCwgQ2hlc2FwZWFrZSwgRm9yZXN0IExhYnMgYW5kIEhlcmJhbGlmZSwganVzdCB0byBuYW1lIGEgZmV3LiBJbiBvdXIgb3BpbmlvbiwgYSBncmVhdCBleGFtcGxlIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSBpbiB0b2RheeKAmXMgbWFya2V0IGlzIEFwcGxlLiBUaGUgUyA1MDDigJlzIHByaWNlIHRvIGVhcm5pbmdzIG11bHRpcGxlIGlzIDcxJSBoaWdoZXIgdGhhbiBBcHBsZeKAmXMsIGFuZCBpZiBBcHBsZSB3ZXJlIHNpbXBseSB2YWx1ZWQgYXQgdGhlIHNhbWUgbXVsdGlwbGUsIGl0cyBzaGFyZSBwcmljZSB3b3VsZCBiZSAkODQwLCB3aGljaCBpcyA1MiUgaGlnaGVyIHRoYW4gaXRzIGN1cnJlbnQgcHJpY2UuMSBUaGlzIGlzIGEgZHJhbWF0aWMgdmFsdWF0aW9uIGRpc2Nvbm5lY3QgdGhhdCBzaW1wbHkgbWFrZXMgbm8gc2Vuc2UgdG8gdXMsIGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBjb21wYW55IGFncmVlcyB3aXRoIHVzIG9uIHRoaXMgcG9pbnQuIFRpbSBDb29rIGhpbXNlbGYgaGFzIGV4cHJlc3NlZCBvbiBtb3JlIHRoYW4gb25lIG9jY2FzaW9uIHRoYXQgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQsIGFuZCBhcyB0aGUgY29tcGFueSBzdGF0ZXMsIGl0IGFscmVhZHkgaGFzIGluIHBsYWNlIOKAnHRoZSBsYXJnZXN0IHNoYXJlIHJlcHVyY2hhc2UgYXV0aG9yaXphdGlvbiBpbiBoaXN0b3J5LuKAnSBXZSBiZWxpZXZlLCBob3dldmVyLCB0aGF0IHRoaXMgc2hhcmUgcmVwdXJjaGFzZSBhdXRob3JpemF0aW9uIGNhbiBhbmQgc2hvdWxkIGJlIGV2ZW4gbGFyZ2VyLCBhbmQgZWZmZWN0dWF0aW5nIHRoYXQgZm9yIHRoZSBiZW5lZml0IG9mIGFsbCBvZiB0aGUgY29tcGFueeKAmXMgc2hhcmVob2xkZXJzIGlzIHRoZSBzb2xlIGludGVudGlvbiBvZiBvdXIgcHJvcG9zYWwuIFRoZSBjb21wYW55IGhhcyByZWNvbW1lbmRlZCB2b3RpbmcgYWdhaW5zdCBvdXIgcHJvcG9zYWwgZm9yIHZhcmlvdXMgcmVhc29ucy4gSXQgc2VlbXMgdG8gdXMgdGhhdCB0aGUgYmFzaXMgb2YgaXRzIGFyZ3VtZW50IGFnYWluc3Qgb3VyIHByb3Bvc2FsIGlzIHRoYXQgdGhlIGNvbXBhbnkgYmVsaWV2ZXMsIGJlY2F1c2Ugb2YgdGhlIOKAnGR5bmFtaWMgY29tcGV0aXRpdmUgbGFuZHNjYXBl4oCdIGFuZCBiZWNhdXNlIGl0cyDigJxyYXBpZCBwYWNlIG9mIGlubm92YXRpb24gcmVxdWlyZVtzXSB1bnByZWNlZGVudGVkIGludmVzdG1lbnQsIGZsZXhpYmlsaXR5IGFuZCBhY2Nlc3MgdG8gcmVzb3VyY2Vz4oCdLCBpdCBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBpdHMgcmVwdXJjaGFzZSBwcm9ncmFtLiBBc3N1bWluZyB0aGlzIGluZGVlZCBpcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYW554oCZcyBhcmd1bWVudCwgd2UgZmluZCBpdHMgcG9zaXRpb24gb3Zlcmx5IGNvbnNlcnZhdGl2ZSAoYWxtb3N0IHRvIHRoZSBwb2ludCBvZiBiZWluZyBpcnJhdGlvbmFsKSwgd2hlbiB3ZSBjb25zaWRlciB0aGF0IHRoZSBjb21wYW55IGhhZCAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYXMgb2YgU2VwdGVtYmVyIDI4LCAyMDEzIGFuZCB0aGF0IGNvbnNlbnN1cyBlYXJuaW5ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWxtb3N0ICQ0MCBiaWxsaW9uIG5leHQgeWVhci4gR2l2ZW4gdGhpcyBtYXNzaXZlIG5ldCBjYXNoIHBvc2l0aW9uIGFuZCByb2J1c3QgZWFybmluZ3MgZ2VuZXJhdGlvbiwgQXBwbGUgaXMgcGVyaGFwcyB0aGUgbW9zdCBvdmVyY2FwaXRhbGl6ZWQgY29tcGFueSBpbiBjb3Jwb3JhdGUgaGlzdG9yeSwgZnJvbSBvdXIgcGVyc3BlY3RpdmUuIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBsaXF1aWRpdHkgaXQgbWF5IHJlcXVpcmUgd2l0aCByZXNwZWN0IHRvIOKAnHVucHJlY2VkZW50ZWQgaW52ZXN0bWVudCwgZmxleGliaWxpdHkgYW5kIGFjY2VzcyB0byByZXNvdXJjZXPigJ0gZm9yIGlubm92YXRpb24gbW92aW5nIGZvcndhcmQsIHdlIGJlbGlldmUgdGhlIHVucHJlY2VkZW50ZWQgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGN1cnJlbnRseSBvdmVyY2FwaXRhbGl6ZWQgd291bGQgb3ZlcmNvbXBlbnNhdGUgZm9yIGFueSBzdWNoIGludmVzdG1lbnRzIChpbmNsdWRpbmcgcG9zc2libGUgaW52ZXN0bWVudHMgaW4gc3RyYXRlZ2ljIE0sIHRvIHdoaWNoIHRoZSBjb21wYW55IGRvZXMgbm90IHJlZmVyKS4gU2FpZCBhbm90aGVyIHdheSwgd2UgYmVsaWV2ZSB0aGF0IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgY29tcGFueeKAmXMgdW5wcmVjZWRlbnRlZGx5IGVub3Jtb3VzIG5ldCBjYXNoIGJhbGFuY2UsIHJvYnVzdCBhbm51YWwgZWFybmluZ3MsIGFuZCB0cmVtZW5kb3VzIGJvcnJvd2luZyBjYXBhY2l0eSBwcm92aWRlIG1vcmUgdGhhbiBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBhZmZvcmQgYm90aCB0aGUgdXNlIG9mIGNhc2ggZm9yIGFueSBuZWNlc3Nhcnkgb25nb2luZyBidXNpbmVzcy1yZWxhdGVkIGludmVzdG1lbnRzIGluIGFkZGl0aW9uIHRvIHRoZSBjYXNoIHVzZWQgZm9yIHRoZSBpbmNyZWFzZWQgc2hhcmUgcmVwdXJjaGFzZXMgcHJvcG9zZWQuXHJcbkl0IGlzIG91ciBiZWxpZWYgdGhhdCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEJvYXJkLCBvbiBiZWhhbGYgb2YgdGhlIGNvbXBhbnnigJlzIHNoYXJlaG9sZGVycywgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3VjaCBhIGxhcmdlIGFuZCB1bm1pc3Rha2FibGUgb3Bwb3J0dW5pdHkuIEluZGVlZCwgd2UgYmVsaWV2ZSB0aGF0IGJ5IGNob29zaW5nIG5vdCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtLCB0aGUgZGlyZWN0b3JzIGFyZSBhY3R1YWxseSBwZXJmb3JtaW5nIGEgZ3JlYXQgZGlzc2VydmljZSB0byB0aGUgb3duZXJzLCBlc3BlY2lhbGx5IHNtYWxsZXIgc2hhcmVob2xkZXJzIHdobyBtYXkgbm90IGJlIGluIGEgcG9zaXRpb24gdG8gYnV5IG1vcmUgc3RvY2sgdGhlbXNlbHZlcy4gTWVhbndoaWxlLCB3ZSBhcmUgaW4gYSBwb3NpdGlvbiB0byBjb250aW51ZSBidXlpbmcgc2hhcmVzIGluIHRoZSBtYXJrZXQgYXQgdG9kYXkncyBwcmljZSwgc28gcGVyaGFwcyB3ZSBzaG91bGQgdGhhbmsgdGhlIEJvYXJkIGZvciBub3QgYmVpbmcgbW9yZSBhZ2dyZXNzaXZlLCBhbmQgdGh1cyBhbGxvd2luZyB1cyB0byBhY2N1bXVsYXRlIGFuIGV2ZW4gbGFyZ2VyIGludmVzdG1lbnQgcG9zaXRpb24gYXQgYSBwcmljZSB0aGF0IHJlZmxlY3RzIHRoZSBhZm9yZW1lbnRpb25lZCB2YWx1YXRpb24gZGlzY29ubmVjdC4gSW4gZmFjdCwgb3ZlciB0aGUgcGFzdCB0d28gd2Vla3Mgd2UgcHVyY2hhc2VkICQxIGJpbGxpb24gbW9yZSBpbiBBcHBsZSBzaGFyZXMsICQ1MDAgbWlsbGlvbiBvZiB3aGljaCB3ZSBwdXJjaGFzZWQgdG9kYXksIGJyaW5naW5nIG91ciB0b3RhbCBvd25lcnNoaXAgcG9zaXRpb24gaW4gQXBwbGUgdG8gYSBjdXJyZW50IHZhbHVlIG9mIGFwcHJveGltYXRlbHkgJDMuNiBiaWxsaW9uLlxyXG5HaXZlbiB0aGUgZGVncmVlIHRvIHdoaWNoIEFwcGxlIGFwcGVhcnMgdW5kZXJ2YWx1ZWQgdG8gdXMsIHdlIGFsbW9zdCBmZWVsIHRoYXQgaXTigJlzIGEgd2FzdGUgb2YgdGltZSB0byBkZWJhdGUgdGhlIHBvaW50LiBBcyB3ZSBiZWxpZXZlIGl0IHRvIGJlIHRoZSBwcmVlbWluZW50IGFuZCBtb3N0IGlubm92YXRpdmUgY29uc3VtZXIgcHJvZHVjdHMgY29tcGFueSBpbiB0aGUgd29ybGQsIHdpdGggdGhlIGdyZWF0ZXN0IGJyYW5kLCBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyBpbiB0aGUgd29ybGQsIEFwcGxlIGhhcyBoYWQgdHJlbWVuZG91cyBncm93dGggdG8gZGF0ZSwgYW5kIHdlIGZhaWwgdG8gc2VlIHdoeSB0aGlzIGdyb3d0aCB3b3VsZCBub3QgY29udGludWUgbW92aW5nIGZvcndhcmQuIFRoZSBpbmR1c3RyeSAoc21hcnRwaG9uZXMgYW5kIHRhYmxldHMpIGlzIGV4cGVjdGVkIHRvIGdyb3cgdm9sdW1lIGF0IGEgMTUlIGNvbXBvdW5kZWQgYW5udWFsIGdyb3d0aCByYXRlIGZyb20gMjAxMyB0aHJvdWdoIDIwMTcgYWNjb3JkaW5nIHRvIElEQy4gV2UgYmVsaWV2ZSBBcHBsZSBzaG91bGQgY29udGludWUgdG8gYmVuZWZpdCBmcm9tIHRoaXMgc2VjdWxhciBncm93dGgsIGFzIGxhc3QgeWVhciwgODUlIG9mIEFwcGxl4oCZcyByZXZlbnVlcyBjYW1lIGZyb20gc21hcnRwaG9uZXMsIHRhYmxldHMsIGFuZCByZWxhdGVkIHNvZnR3YXJlLCBzZXJ2aWNlcywgYW5kIGFjY2Vzc29yaWVzLiBUaGUgbmF5c2F5ZXJzIHF1ZXN0aW9uIHdoZXRoZXIgQXBwbGUgd2lsbCBiZSBhYmxlIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgZ3Jvd3RoIHdpdGhvdXQgc2FjcmlmaWNpbmcgcHJpY2luZyBhbmQgZ3Jvc3MgbWFyZ2lucywgZXNwZWNpYWxseSB3aXRoIGNvbXBldGl0aW9uIGZyb20gR29vZ2xlLCBTYW1zdW5nLCBNaWNyb3NvZnQsIEFtYXpvbiBhbmQgQ2hpbmVzZSBtYW51ZmFjdHVyZXJzLiBPdXIgcmVzcG9uc2UgdG8gdGhlbSBpcyB0aGF0IHRoZSBhbnN3ZXIgaXMgYWxyZWFkeSBldmlkZW50IHRvIHVzIGZyb20gdGhlIGNvbnRpbnVpbmcgbG95YWx0eSBvZiBBcHBsZeKAmXMgZ3Jvd2luZyBjdXN0b21lciBiYXNlLiBUaGUgaGlnaGx5IHN1Y2Nlc3NmdWwgZXZvbHV0aW9uYXJ5IChub3QgcmV2b2x1dGlvbmFyeSkgaW50cm9kdWN0aW9ucyBvZiB0aGUgaVBob25lIDVzIGFuZCA1YyBhbmQgSXBhZCBBaXIgYW5kIE1pbmksIHByb3ZlIHRvIHVzIHRoYXQgQXBwbGUgY291bGQsIGZvciB0aGUgbW9zdCBwYXJ0LCBtYWludGFpbiBwcmljaW5nIGFuZCBncm9zcyBtYXJnaW4gYXMgd2UgYmVsaWV2ZSBjb25zdW1lcnMgYXJlIHdpbGxpbmcgdG8gcGF5IGEgcmVhc29uYWJsZSBwcmVtaXVtIGZvciB0aGUgd29ybGTigJlzIGJlc3Qgc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuIFRoZSBydW1vcmVkIGZ1dHVyZSBpbnRyb2R1Y3Rpb24gb2YgcHJvZHVjdCBsaW5lIGV4dGVuc2lvbnMgd2l0aCBsYXJnZXIgc2NyZWVucyBmb3IgYm90aCB0aGUgaVBob25lIGFuZCBpUGFkIHdvdWxkIGZ1cnRoZXIgc3VwcG9ydCB0aGlzIHZpZXcuMiBJbiBmYWN0LCBhIHJlY2VudCBzdHVkeSBmcm9tIE5EQyBzaG93cyB0aGF0IHRoZSBpUGhvbmUgYWNjb3VudGVkIGZvciA0MiUgb2Ygc21hcnRwaG9uZSB1c2VycyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhdCB0aGUgZW5kIG9mIDIwMTMsIHVwIGEgc3RhZ2dlcmluZyAyMCUgZnJvbSB0aGUgcHJpb3IgeWVhci4gRGVzcGl0ZSBpdHMgZ3JlYXQgc2NhbGUgYW5kIG5hcnJvdyBmb2N1cywgQXBwbGUgaGFzIGFuIG9wZXJhdGluZyBtYXJnaW4gb2YganVzdCAyOC41JS4gV2UgYmVsaWV2ZSBpdHMgY3VzdG9tZXJz4oCZIHdpbGxpbmduZXNzIHRvIHBheSBhIHByZW1pdW0gcHJpY2UgZm9yIHRoZSB3b3JsZOKAmXMgZ3JlYXRlc3QgcHJvZHVjdHMgc2hvdWxkIGVuYWJsZSBBcHBsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZXhwZWN0ZWQgdm9sdW1lIGdyb3d0aCBvZiB0aGVzZSBjYXRlZ29yaWVzIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgbGFyZ2VseSBtYWludGFpbmluZyBpdHMgYXZlcmFnZSBzZWxsaW5nIHByaWNlcyBhbmQgZ3Jvc3MgbWFyZ2lucy4gQW5kLCBhcyBzb2Z0d2FyZSBhbmQgc2VydmljZXMgaW1wcm92ZSBhbmQgYmVjb21lIGV2ZW4gbW9yZSBpbXBvcnRhbnQgdG8gY29uc3VtZXJzIGluIHRoZSBmdXR1cmUsIHdlIGV4cGVjdCBjdXN0b21lciBsb3lhbHR5IHRvIHN0cmVuZ3RoZW4gZnVydGhlci5cclxuRXZlbiBpZiB0aGUgc3RvcnkgZW5kZWQgd2l0aCBBcHBsZeKAmXMgZXhpc3RpbmcgcHJvZHVjdCBhbmQgc29mdHdhcmUgbGluZXMsIHdlIHdvdWxkIHN0aWxsIGNob29zZSB0byBtYWtlIEFwcGxlIG91ciBsYXJnZXN0IGludmVzdG1lbnQuIEJ1dCB0aGVyZSBpcyBtb3JlIHRvIHRoZSBzdG9yeSEgVGltIENvb2sga2VlcHMgc2F5aW5nIHRoYXQgaGUgZXhwZWN0cyB0byBpbnRyb2R1Y2Ug4oCcbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVz4oCdIGFuZCB5ZXQgdmVyeSBmZXcgcGVvcGxlIHNlZW0gdG8gYmUgbGlzdGVuaW5nLiBXZeKAmXJlIG5vdCBhd2FyZSBvZiBhIHNpbmdsZSBXYWxsIFN0cmVldCBhbmFseXN0IHdobyBpbmNsdWRlcyDigJxuZXcgcHJvZHVjdHMgaW4gbmV3IGNhdGVnb3JpZXPigJ0gb3IgbmV3IHNlcnZpY2VzIGluIGFueSBvZiB0aGVpciBmaW5hbmNpYWwgcHJvamVjdGlvbnMsIGV2ZW4gdGhvdWdoIEFwcGxlIGNsZWFybHkgaGFzIGFuIGltcHJlc3NpdmUgdHJhY2sgcmVjb3JkIG9mIHN1Y2ggbmV3IGNhdGVnb3J5IHByb2R1Y3QgaW50cm9kdWN0aW9ucywgZXZlbiBpZiBpdCBkb2VzIHNvIHJhcmVseS4gQXBwbGUgcmVsZWFzZWQgdGhlIGlQaG9uZSBpbiAyMDA3IGFuZCB0aGUgaVBhZCBmaXZlIHllYXJzIGxhdGVyIGluIDIwMTIsIGJvdGggc28gZXh0cmFvcmRpbmFyaWx5IHN1Y2Nlc3NmdWwgdGhhdCB0b2RheSB0aGV5IHJlcHJlc2VudCB0aGUgbWFqb3JpdHkgb2YgdGhlIGNvbXBhbnnigJlzIHJldmVudWUuIFRpbSBDb29r4oCZcyBjb21tZW50cywgYWxvbmcgd2l0aCBhZHZhbmNlbWVudHMgaW4gZW5hYmxpbmcgdGVjaG5vbG9naWVzLCBsZWFkIHVzIHRvIGJlbGlldmUgdGhhdCB3ZSBtYXkgc2VlIGluIHRoZSBub3QgdG9vIGRpc3RhbnQgZnV0dXJlIHdoYXQgbmV3IGdyb3VuZGJyZWFraW5nIHByb2R1Y3RzIHRoZXnigJl2ZSBiZWVuIHdvcmtpbmcgb24gZGV2ZWxvcGluZyBpbiBDdXBlcnRpbm8gdGhlc2UgbGFzdCBzZXZlcmFsIHllYXJzLjNcclxuVG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHNjYWxlIG9mIHRoZSBvcHBvcnR1bml0eSB0aGF0IHN0ZW1zIGZyb20gbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVzLCBsZXTigJlzIHRha2UgYSBtb21lbnQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIEFwcGxlIHRlbGV2aXNpb24uIFRoZSBtYWpvciBlbGVjdHJvbmljcyBjb21wYW5pZXMgYXJlIG5vdyBmb2N1c2VkIG9uIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBUVnMgYXMgdGhlaXIgbmV4dCBiaWcgb3Bwb3J0dW5pdHkuIFVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBpcyBleHBlY3RlZCB0byBvZmZlciBhIGxldmVsIG9mIGltYWdlIGNsYXJpdHkgdGhhdCBpcyBzdXBlcmlvciB0byB0b2RheeKAmXMgaGlnaCBkZWZpbml0aW9uIHRlbGV2aXNpb25zIGZvciBzY3JlZW4gc2l6ZXMgNTUgaW5jaGVzIGFuZCBhYm92ZS4gVG8gZGF0ZSwgdGhlIGJhcnJpZXIgdG8gbWFzcyBtYXJrZXQgYWRvcHRpb24gb2YgdWx0cmEgaGlnaCBkZWZpbml0aW9uIGhhcyBiZWVuIHRoZSBwcmljZSBnYXAgYmV0d2VlbiBpdCBhbmQgcmVndWxhciBoaWdoIGRlZmluaXRpb24sIGJ1dCB0aGF0IHByaWNlIGdhcCBpcyBjbG9zaW5nIGFuZCB3aWxsIHNvb24gYmUgZGUgbWluaW1pcy4gVGhlIGNsb3Npbmcgb2YgdGhpcyBwcmljZSBnYXAgaXMgc3VwcG9ydGVkIGJ5IHN0YXRlbWVudHMgbWFkZSBieSB0aGUgQ28tQ0VPIG9mIFNhbXN1bmcgRWxlY3Ryb25pY3MsIHdobyBleHBlY3RzIHRoZSBwcmljZSBnYXAgdG8gZmFsbCB0byAxMCUgYnkgdGhlIGVuZCBvZiB0aGlzIHllYXIuIFdoaWxlIGNhYmxlIGNvbXBhbmllcyB3aWxsIGxpa2VseSBiZSBzbG93IHRvIHVwZ3JhZGUgdGhlaXIgbGluZWFyIFRWIGluZnJhc3RydWN0dXJlIGR1ZSB0byBjb3N0LCB2aWRlbyBjb250ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgaW50ZXJuZXQgdmlhIHNlcnZpY2VzIGxpa2UgTmV0ZmxpeCBhbmQgb3RoZXJzLiBXZSBiZWxpZXZlIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiByZXByZXNlbnRzIGEgbWFqb3IgY2F0YWx5c3QgZm9yIHRoZSBuZXh0IFRWIHJlcGxhY2VtZW50IGN5Y2xlIGFuZCBhIHByb21pc2luZyBtb21lbnQgZm9yIEFwcGxlIHRvIGludHJvZHVjZSBpdHMgZmlyc3QgbmV3IHByb2R1Y3QgaW4gdGhpcyBjYXRlZ29yeS4gUmVlZCBIYXN0aW5ncywgQ0VPIG9mIE5ldGZsaXgsIGhhcyByZWZlcmVuY2VkIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBhcyBhIG1ham9yIGNhdGFseXN0IGZvciBOZXRmbGl4IGdvaW5nIGZvcndhcmQuIFdoaWxlIHRoaXMgaXMgdHJ1ZSBmb3IgTmV0ZmxpeCwgd2UgYmVsaWV2ZSBpdCBpcyBhbHNvIHRydWUgZm9yIEFwcGxlLCBub3QganVzdCBmb3IgaXRzIGhhcmR3YXJlIGJ1dCBhbHNvIGZvciBzZWxsaW5nIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBtb3ZpZXMgYW5kIHNob3dzIG9uIGlUdW5lcyB0aHJvdWdoIHRoZSBpbnRlcm5ldC4gV2l0aCAyMzggbWlsbGlvbiBUVnMgc29sZCBnbG9iYWxseSBpbiAyMDEyLCBpdCB3b3VsZCBub3Qgc3VycHJpc2UgdXMgaWYgQXBwbGUgY291bGQgc2VsbCAyNSBtaWxsaW9uIG5ldyBBcHBsZSB1bHRyYSBoaWdoIGRlZmluaXRpb24gdGVsZXZpc2lvbnMgYXQgJDEsNjAwIHBlciB1bml0LCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYm90aCBpdHMgdHJhY2sgcmVjb3JkIG9mIGludHJvZHVjaW5nIGJlc3QgaW4gY2xhc3MgcHJvZHVjdHMgYW5kIGl0cyBtYXJrZXQgc2hhcmUgaW4gc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuNCBBdCBhIGdyb3NzIG1hcmdpbiBvZiAzNy43JSwgd2hpY2ggd291bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgdGhlIG92ZXJhbGwgY29tcGFueSwgc3VjaCBhIGRlYnV0IHdvdWxkIGFkZCAkNDAgYmlsbGlvbiBvZiByZXZlbnVlcyBhbmQgJDE1IGJpbGxpb24gdG8gb3BlcmF0aW5nIGluY29tZSBhbm51YWxseS41XHJcblRoZSBwb3NzaWJpbGl0eSBvZiBhIHRlbGV2aXNpb24gcmVwcmVzZW50cyBvbmx5IG9uZSBvcHBvcnR1bml0eSBmb3IgdGhlIGNvbXBhbnkgdGhhdCBzdGVtcyBmcm9tIG5ldyBwcm9kdWN0cyBpbiBuZXcgY2F0ZWdvcmllcy4gV2hpbGUgd2Ugd29u4oCZdCBnbyB0aHJvdWdoIGFsbCBvZiB0aGVtIGhlcmUsIHdlIHNlZSBzZXZlcmFsIG1ham9yIG9wcG9ydHVuaXRpZXMgaW4gaGFyZHdhcmUgYWxvbmUuIFdpdGggYWR2YW5jZW1lbnRzIGluIG1pbmlhdHVyaXphdGlvbiBhbmQgY29udGludWVkIGltcHJvdmVtZW50cyBpbiBTaXJpLCBpdCBzZWVtcyBvYnZpb3VzIHRvIHVzIHRoYXQgQXBwbGUgaGFzIGEgY29tcGVsbGluZyBvcHBvcnR1bml0eSBpbiB0aGUgZXhjaXRpbmcgYXJlYSBvZiB3ZWFyYWJsZSBkZXZpY2VzLCBzdXBwb3J0ZWQgYnkgcnVtb3JzIHRoYXQgQXBwbGUgaXMgZGV2ZWxvcGluZyBhIHNtYXJ0d2F0Y2ggKGFzIFRpbSBDb29rIGhpbXNlbGYgc2FpZCB0aGUgd3Jpc3QgaXMg4oCcYW4gYXJlYSBvZiBncmVhdCBpbnRlcmVzdCBmb3IgQXBwbGXigJ0pLiBXaGlsZSBtYW55IGNvbnNpZGVyIEFwcGxlIGEgaGFyZHdhcmUgY29tcGFueSwgdG8gcGlnZW9uaG9sZSBpdCBhcyBzdWNoIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSBpbiBvdXIgb3Bpbmlvbi4gQXBwbGUgaGFzIGJ1aWx0IGFuIGVjb3N5c3RlbSBvZiBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyB0aGF0IHdlIGJlbGlldmUgY29sbGVjdGl2ZWx5IHJlcHJlc2VudHMgdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBjb25zdW1lciBwcm9kdWN0IHBsYXRmb3JtIGluIHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBjb25zdW1lci1mYWNpbmcgdGVjaG5vbG9naWVzLiBBbmQgYXMgQXBwbGXigJlzIGN1c3RvbWVyIGJhc2UgY29udGludWVzIHRvIGVuam95IHRoZSB1c2Ugb2YgdGhpcyBlY29zeXN0ZW0sIHN0b3JpbmcgbWVkaWEgaW4gdGhlIGNsb3VkIGFuZCBtb3ZpbmcgaXQgZnJvbSBvbmUgQXBwbGUgZGV2aWNlIHRvIGFub3RoZXIgYXMgZG9pbmcgc28gYmVjb21lcyBpbmNyZWFzaW5nbHkgY29udmVuaWVudCB3aXRoIGlubm92YXRpb25zIHN1Y2ggYXMgQWlycGxheSAoYXMganVzdCBvbmUgc2ltcGxlIGV4YW1wbGUgb2YgdGhpcyBlY29zeXN0ZW3igJlzIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSksIHdlIGJlbGlldmUgdGhhdCBjdXN0b21lciBiYXNlIGdyb3dzIGluY3JlYXNpbmdseSBsb3lhbCBhbmQgZXhjaXRlZCBmb3IgdGhlIG5leHQgQXBwbGUgcHJvZHVjdCByZWxlYXNlLCBtYWtpbmcgaXQgYW4gYXNzZXQgaW4gYW5kIG9mIGl0c2VsZiB0aGF0IGdyb3dzIGFuZCBiZWNvbWVzIGluY3JlYXNpbmdseSB2YWx1YWJsZS4gSW5kZWVkLCB3ZSBiZWxpZXZlIGFueSBuZXcgc29mdHdhcmUgc2VydmljZSB0aGF0IG9mZmVycyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGN1c3RvbWVyIGJhc2UgYmVjb21lcyBhIGxhcmdlIG9wcG9ydHVuaXR5IGZvciBBcHBsZSB0byBpbnRyb2R1Y2UgYXMgYSByZXZvbHV0aW9uYXJ5IGFuZCBkaXNydXB0aXZlIGJvbHQtb24gdG8gdGhlIGVjb3N5c3RlbS4gQXMganVzdCBvbmUgb2YgbWFueSBwb3NzaWJsZSBleGFtcGxlcyBvZiB0aGlzIHBoZW5vbWVub24sIEFwcGxlIGNvdWxkIGludHJvZHVjZSBhIG5leHQgZ2VuZXJhdGlvbiBwYXltZW50cyBzb2x1dGlvbi4gSW4gdGVybXMgb2Ygd2hldGhlciB0aGUgbWFya2V0cGxhY2UgaXMgd2VsbCBhZGRyZXNzZWQgYnkgbW9iaWxlIHBheW1lbnRzIHNvbHV0aW9ucywgVGltIENvb2sgaGFzIHNhaWQg4oCcSSB0aGluayBpdCBpcyBpbiBpdHMgaW5mYW5jeeKApiBJIHRoaW5rIGl0IGlzIGp1c3QgZ2V0dGluZyBzdGFydGVkIGFuZCBqdXN0IG9mIG91dCBvZiB0aGUgc3RhcnRpbmcgYmxvY2su4oCdIFdpdGggdGhlIGZpbmdlcnByaW50IHNlbnNvciwgaUJlYWNvbiwgNTc1KyBtaWxsaW9uIGNyZWRpdCBjYXJkIG51bWJlcnMgc3RvcmVkIGluIGlUdW5lcywgYW5kIEFwcGxl4oCZcyBob21vZ2VuZW91cyBpT1MgaW5zdGFsbGVkIGJhc2Ugd2l0aCA3OSUgb2YgZGV2aWNlcyB1c2luZyBpT1MgNywgd2UgYmVsaWV2ZSBhIHJldm9sdXRpb25hcnkgcGF5bWVudHMgc29sdXRpb24gaXMgbm93IGEgdmVyeSByZWFsIG9wcG9ydHVuaXR5IHRoYXQgdGhlIGNvbXBhbnkgY291bGQgY2hvb3NlIHRvIHB1cnN1ZS4gV2l0aCByZXNwZWN0IHRvIGFsbCBvZiBBcHBsZeKAmXMgbmV3IGFuZCBleGlzdGluZyBvcHBvcnR1bml0aWVzIGZvciBncm93dGgsIHRoZXkgd2lsbCBvbmx5IHByb3ZlIHRvIGJlIHN1Y2Nlc3NmdWwgd2l0aCBzdHJvbmcgZXhlY3V0aW9uIGZyb20gdGhlIGNvbXBhbnnigJlzIG1hbmFnZW1lbnQsIGluIHdob20gd2UgaG9sZCBncmVhdCBjb25maWRlbmNlLiBOYXlzYXllcnMgc2F5IFRpbSBDb29rIGlzIG5vdCBTdGV2ZSBKb2JzLCBhbmQgdGhleeKAmXJlIGFic29sdXRlbHkgcmlnaHQuIEhlIGlzIFRpbSBDb29rIGFuZCB3ZSBiZWxpZXZlIGhlIGlzIGRvaW5nIGFuIGV4Y2VsbGVudCBqb2IsIGFuZCBKb25hdGhhbiBJdmUsIFNlbmlvciBWUCBvZiBEZXNpZ24sIGlzIEpvbmF0aGFuIEl2ZSBhbmQgd2UgYmVsaWV2ZSBoZeKAmXMgZG9pbmcgYW4gZXhjZWxsZW50IGpvYiwgZXRjZXRlcmEuXHJcbkluIHRoaXMgbGV0dGVyLCB3ZSBoYXZlIGFib3ZlIHN1bW1hcml6ZWQgd2h5IHdlIGJlbGlldmUgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQgaW4gb3JkZXIgdG8gZXhwcmVzcyBob3cgcmlkaWN1bG91cyBpdCBzZWVtcyB0byB1cyBmb3IgQXBwbGUgdG8gaG9yZGUgc28gbXVjaCBjYXNoIHJhdGhlciB0aGFuIHJlcHVyY2hhc2Ugc3RvY2sgKGFuZCB0aGVyZWJ5IHVzZSB0aGF0IGNhc2ggdG8gbWFrZSBhIGxhcmdlciBpbnZlc3RtZW50IGluIGl0c2VsZiBmb3IgdGhlIGJlbmVmaXQgb2YgYWxsIG9mIHRoZSBjb21wYW554oCZcyBzaGFyZWhvbGRlcnMpLiBJbiBpdHMgc3RhdGVtZW50IGluIG9wcG9zaXRpb24gdG8gb3VyIHByb3Bvc2FsLCB0aGUgY29tcGFueSBjbGFpbXMgdGhhdCDigJx0aGUgQm9hcmQgYW5kIG1hbmFnZW1lbnQgdGVhbSBoYXZlIGRlbW9uc3RyYXRlZCBhIHN0cm9uZyBjb21taXRtZW50IHRvIHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBhbmQgd2UgYmVsaWV2ZSB0aGF0IGlzIHRydWUsIGJ1dCB3ZSBhbHNvIGJlbGlldmUgdGhhdCBjb21taXRtZW50IGlzIG5vdCBzdHJvbmcgZW5vdWdoIGdpdmVuIHRoZSB1bmlxdWUgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGJvdGggdW5kZXJ2YWx1ZWQgYW5kIG92ZXJjYXBpdGFsaXplZC4gRnVydGhlcm1vcmUsIGl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYSBzaGFyZSByZXB1cmNoYXNlIGlzIG5vdCBzaW1wbHkgYW4gYWN0IG9mIOKAnHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBzaW5jZSBpdCBpcyBhbHNvIHRoZSBjb21wYW55IGVmZmVjdGl2ZWx5IG1ha2luZyBhbiBpbnZlc3RtZW50IGluIGl0c2VsZi4gVG8gdXMsIGFzIGxvbmcgdGVybSBpbnZlc3RvcnMsIHRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2U6IGEgZGl2aWRlbmQgaXMgYSBwdXJlIHJldHVybiBvZiBjYXBpdGFsIHdoaWxlIGEgc2hhcmUgcmVwdXJjaGFzZSBpcyB0aGUgY29tcGFueSBtYWtpbmcgYW4gaW52ZXN0bWVudCBpbiBpdHNlbGYgYnkgYnV5aW5nIHNoYXJlcyBpbiB0aGUgbWFya2V0IGF0IHRoZSBjdXJyZW50IHByaWNlLCB3aGljaCB3ZSBiZWxpZXZlIHRvIGJlIHVuZGVydmFsdWVkLCBmcm9tIHNoYXJlaG9sZGVycyB3aWxsaW5nIHRvIHNlbGwgYXQgdGhhdCBwcmljZSBmb3IgdGhlIGJlbmVmaXQgb2Ygc2hhcmVob2xkZXJzIHdobyBjaG9vc2UgdG8gcmVtYWluIGludmVzdG9ycyBmb3IgdGhlIGxvbmdlciB0ZXJtLiBBbmQgd2UgYXJlIGxvbmcgdGVybSBpbnZlc3RvcnMuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vIG9uZSBvbiB0aGUgQm9hcmQgc2VlbXMgdG8gYmUgYW4gZXhwZXJ0IGluIHRoZSB3b3JsZCBvZiBpbnZlc3RtZW50IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIGJhc2VkIG9uIG91ciByZWNvcmQsIHdlIGJlbGlldmUgZmV3IHdpbGwgYXJndWUgdGhhdCB3ZSBhcmUgZXhwZXJ0cyBpbiB0aGlzIGFyZWEsIGFuZCB3ZSBoYXZlIG5vIGRvdWJ0cyB0aGF0IHRoZSBCb2FyZCBpcyBkb2luZyBhIGdyZWF0IGRpc3NlcnZpY2UgdG8gaXRzIHNoYXJlaG9sZGVycyBieSBub3QgaW1tZWRpYXRlbHkgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgc2hhcmUgcmVwdXJjaGFzZSBwcm9ncmFtIGluIG9yZGVyIHRvIG1vcmUgZWZmZWN0aXZlbHkgdGFrZSBhZHZhbnRhZ2Ugb2Ygd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBsb3cgbWFya2V0IHZhbHVhdGlvbi5cclxuV2UgaGF2ZSBleHByZXNzZWQgYWJvdmUgd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBwcmltYXJ5IHJlYXNvbiBmb3Igbm90IHN1cHBvcnRpbmcgb3VyIHByb3Bvc2FsLiBDb252ZXJzZWx5LCBpdCBpcyBvdXIgYmVsaWVmIHRoYXQgQXBwbGXigJlzIGN1cnJlbnQgZXhjZXNzIGxpcXVpZGl0eSBpcyB3aXRob3V0IGhpc3RvcmljYWwgcHJlY2VkZW50IGFuZCBiZXlvbmQgcmVhc29uYWJsZSBjb21wYXJpc29uIHRvIGl0cyBwZWVycyBvciBvdGhlcndpc2UsIGFuZCBzdWNoIGRyYW1hdGljIG92ZXJjYXBpdGFsaXphdGlvbiBhZmZvcmRzIHRoZSBjb21wYW55IGVub3VnaCBleGNlc3MgbGlxdWlkaXR5IHRvIHJlcHVyY2hhc2UgdGhlIGFtb3VudCBvZiBzaGFyZXMgd2UgcHJvcG9zZWQuIEFwcGxl4oCZcyBleGlzdGluZyBjYXBpdGFsIHJldHVybiBwcm9ncmFtIGhhcyBqdXN0ICQzNyBiaWxsaW9uIHJlbWFpbmluZywgYW5kIHRoZSBjb21wYW55IGhhcyB1bnRpbCB0aGUgZW5kIG9mIDIwMTUgdG8gY29tcGxldGUgaXQuIFdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIHByb2dyYW0sIHRoZSBsYXJnZXN0IHBpbGUgb2YgY29ycG9yYXRlIGNhc2ggaW4gdGhlIHdvcmxkIGlzIGxpa2VseSB0byBncm93IGV2ZW4gbGFyZ2VyLCBhbmQgaWYgdGhlIHNoYXJlIHByaWNlIHJpc2VzLCB0aGlzIEJvYXJkIHdpbGwgaGF2ZSBtaXNzZWQgYSBncmVhdCBvcHBvcnR1bml0eSB0byB1c2UgbW9yZSBvZiB0aGF0IGhvYXJkZWQgY2FzaCB0byByZXB1cmNoYXNlIHNoYXJlcyBhdCBhbiBhdHRyYWN0aXZlIHZhbHVlLiBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBCb2FyZCB0byBmb2N1cyBvbiB0aGUgcmV0dXJuIG9mIGNhcGl0YWwgb24gYSBzdXN0YWluZWQgYmFzaXMsIGl0IGlzIGFsc28gaW1wb3J0YW50IGZvciB0aGUgQm9hcmQgdG8gZXZhbHVhdGUgd2hldGhlciBvciBub3QgaXRzIHNoYXJlIHByaWNlIGlzIHVuZGVydmFsdWVkIGFuZCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdCB3aXRoIHNoYXJlIHJlcHVyY2hhc2VzLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGJhbGFuY2Ugc2hlZXQgZXhoaWJpdHMgZHJhbWF0aWMgZXhjZXNzIGxpcXVpZGl0eSwgYXMgd2UgYmVsaWV2ZSBBcHBsZeKAmXMgZG9lcyB0b2RheS5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IHdpdGggc28gbXVjaCBvcHBvcnR1bml0eSwgaXQgd291bGQgYmUgcHJ1ZGVudCB0byBtYWludGFpbiBpdHMgZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSBSIG9yIG1ha2UgYWNxdWlzaXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdGhlIGZpbmFuY2lhbCBzdHJlbmd0aCBvZiBpdHMgY29tcGV0aXRvcnMuIFdlIGNvbXBsZXRlbHkgYWdyZWUgdGhhdCB0aGUgY29tcGFueSBtdXN0IGlubm92YXRlIGFuZCBzaG91bGQgYmUgZmxleGlibGUgdG8gbWFrZSBwcnVkZW50IHN0cmF0ZWdpYyBhY3F1aXNpdGlvbnMsIHlldCBldmVuIGFmdGVyIHRha2luZyBzdWNoIGZhY3RvcnMgaW50byBhY2NvdW50LCB3ZSBiZWxpZXZlIHRoYXQgdHJlbWVuZG91cyBleGNlc3MgbGlxdWlkaXR5IHJlbWFpbnMuIFdpdGggcmVzcGVjdCB0byBwb3NzaWJsZSBNICh0byB3aGljaCB0aGUgY29tcGFueSBkb2VzIG5vdCByZWZlciBpbiBpdHMgc3RhdGVtZW50KSwgZm9yIHRoZSBvcHBvcnR1bml0aWVzIGhpZ2hsaWdodGVkIGFib3ZlIChhIFRWLCBhIHdhdGNoLCBhIHBheW1lbnQgc2VydmljZSksIHdlIGZpbmQgaXQgZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBpZGVudGlmeSBhbnkgcG9zc2libGUgc3RyYXRlZ2ljIGFjcXVpc2l0aW9ucyBvZiBzY2FsZSB0aGF0IG1ha2Ugc2Vuc2UuIEZ1cnRoZXJtb3JlLCBzdWNoIGFjdGlvbiB3b3VsZCBzZWVtIHRvIGNvbmZsaWN0IHdpdGggQXBwbGXigJlzIGN1bHR1cmUgaGlzdG9yaWNhbGx5LiBBIHJlbWFya2FibGUgZmFjdCBpcyB0aGF0IHNpbmNlIHRoZSBCb2FyZCByZWFjcXVpcmVkIFN0ZXZlIEpvYnMgdGhyb3VnaCB0aGUgTmVYVCBhY3F1aXNpdGlvbiBmb3IgJDQyNyBtaWxsaW9uIGluIDE5OTcsIHRoZSBuZXh0IGxhcmdlc3QgYWNxdWlzaXRpb24gQXBwbGUgbWFkZSB3YXMgJDIuNiBiaWxsaW9uIGZvciBOb3J0ZWzigJlzIHBhdGVudCBwb3J0Zm9saW8uIEFtYXppbmdseSwgb3ZlciB0aGVzZSAxNyB5ZWFycywgQXBwbGUgbWFkZSBqdXN0ICQ3LjggYmlsbGlvbiB3b3J0aCBvZiBhY3F1aXNpdGlvbnMgaW4gdG90YWwgZHVyaW5nIHRoaXMgdGltZWZyYW1lLiBBcHBsZSBjbGVhcmx5IGhhcyBhIGxvbmcgaGlzdG9yeSBhbmQgY3VsdHVyZSBvZiBkZXZlbG9waW5nIGl0cyBpbm5vdmF0aW9uIGludGVybmFsbHksIHdoaWNoIGxlYWRzIHVzIHRvIGJlbGlldmUgdGhhdCB0aGUgY29tcGFueSB3aWxsIG5vdCBzZWVrIG91dCBsYXJnZSBhY3F1aXNpdGlvbnMgdG8gcHVyc3VlIGFueSBvZiB0aGUgb3Bwb3J0dW5pdGllcyBhYm91dCB3aGljaCB3ZSBoYXZlIHNwZWN1bGF0ZWQuIEluIHRlcm1zIG9mIHBheWluZyBmb3IgdGhlIG5lY2Vzc2FyeSBpbm5vdmF0aW9uIGludGVybmFsbHksIEFwcGxlIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlICQ0MCBiaWxsaW9uIG9mIGVhcm5pbmdzIG5leHQgeWVhciwgd2hpY2ggYWxyZWFkeSB0YWtlcyBpbnRvIGFjY291bnQgYW4gaW5jcmVhc2luZyBSIGV4cGVuc2UuIEluIG9yZGVyIHRvIGFkZHJlc3MgdGhlIGFyZ3VtZW50IHRoYXQgQXBwbGUgc2hvdWxkIHJlc2VydmUgZXhjZXNzIGxpcXVpZGl0eSB0byBtb3JlIGVmZmVjdGl2ZWx5IGNvbXBldGUgd2l0aCBzb21lIG9mIGl0cyBkZWVwLXBvY2tldGVkIGNvbXBldGl0b3JzLCB0aGVyZSBpcyBubyBkb3VidCB0aGF0IHNvbWUgb2YgdGhlbSBhbHNvIGhhdmUgc2lnbmlmaWNhbnQgZWFybmluZ3MgYW5kIG5ldCBjYXNoIG9uIHRoZWlyIGJhbGFuY2Ugc2hlZXRzICh3aGV0aGVyIG9yIG5vdCB0aGF0IGlzIGFwcHJvcHJpYXRlKS4gQnV0IEFwcGxlIGhhcyBtdWNoIG1vcmUuIFdoZW4gY29tcGFyZWQgdG8gaXRzIG5leHQgbGFyZ2VzdCBjb21wZXRpdG9yLCBNaWNyb3NvZnQsIGZvciBleGFtcGxlLCBBcHBsZSBoYXMgJDY4IGJpbGxpb24gbW9yZSBuZXQgY2FzaCBhbmQgaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgJDE4IGJpbGxpb24gbW9yZSBpbiBlYXJuaW5ncyBkdXJpbmcgMjAxNC5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IG11Y2ggb2YgaXRzIGNhc2ggYW5kIGVhcm5pbmdzIGFyZSBpbnRlcm5hdGlvbmFsIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBhIHJlcGF0cmlhdGlvbiB0YXggaWYgcmV0dXJuZWQgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgdG8gcmVwdXJjaGFzZSBzaGFyZXMuIFdoaWxlIHRoaXMgaXMgdHJ1ZSwgd2UgcXVlc3Rpb24gd2h5IHRoZSBjb21wYW55IHdvdWxkIG5vdCBzaW1wbHkgYm9ycm93IHRoZSBtb25leSBpbiB0aGUgVW5pdGVzIFN0YXRlcyB0byB0aGUgZXh0ZW50IGl0IGRlZW1zIGl0cyBkb21lc3RpYyBjYXNoIG9mICQzNiBiaWxsaW9uIGFuZCBkb21lc3RpYyBlYXJuaW5ncyBhcmUgaW5zdWZmaWNpZW50LiBHaXZlbiB0aGF0IHRoZSBjb21wYW55IGhhcyAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYW5kICQ0MCBiaWxsaW9uIG9mIGV4cGVjdGVkIGFubnVhbCBlYXJuaW5ncywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgaGFyZCB0byBmaW5kIGEgYmV0dGVyIHRpbWUgaW4gaGlzdG9yeSB0byBib3Jyb3cgbW9uZXksIGEgJDUwIGJpbGxpb24gc2hhcmUgcmVwdXJjaGFzZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgZmlzY2FsIHllYXIgMjAxNCBzZWVtcyBtb3JlIHRoYW4gcmVhc29uYWJsZSB0byB1cy4gVG9kYXksIEFwcGxl4oCZcyBvdXRzdGFuZGluZyB0ZW4geWVhciBib25kcyB5aWVsZCAzLjYzJSwgYW5kIGl0cyBmaXZlIHllYXIgYm9uZHMgeWllbGQgMiUuIEFwcGxlIGNvdWxkIGVpdGhlciBjb250aW51ZSB0byBjYXJyeSB0aGlzIGRlYnQsIHJlcGF5IGl0IGZyb20gaXRzIGRvbWVzdGljIGVhcm5pbmdzIG92ZXIgdGltZSwgb3IgcmVwYXRyaWF0ZSBjYXNoIGZyb20gYWJyb2FkIHVwb24gdGhlIHBhc3NhZ2Ugb2YgY29ycG9yYXRlIHRheCByZWZvcm0uXHJcblRoZSBjb21wYW55IGhhcyBzdGF0ZWQgdGhhdCBpdCBpcyDigJx1cGRhdGluZyBwZXJzcGVjdGl2ZXMgb24gaXRzIGNhcGl0YWwgcmV0dXJuIHByb2dyYW0gZm9yIDIwMTQgYW5kIGJleW9uZOKAnSBhbmQg4oCcY29sbGVjdGluZyBpbnB1dCBmcm9tIGEgdmVyeSBicm9hZCBiYXNlIG9mIHNoYXJlaG9sZGVycy7igJ0gV2UgYmVsaWV2ZSwgaWYgb3VyIHByb3Bvc2FsIHJlY2VpdmVzIG1ham9yaXR5IHNoYXJlaG9sZGVyIHN1cHBvcnQsIHRoYXQgdGhlIEJvYXJkIHNob3VsZCByZXNwZWN0IGl0IGFuZCBpbmNyZWFzZSB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtIGFzIHJlcXVlc3RlZC4gV2UgYmVsaWV2ZSB0aGlzIGFjdGlvbiB3aWxsIGdyZWF0bHkgZW5oYW5jZSB2YWx1ZSBmb3IgYWxsIGxvbmcgdGVybSBzaGFyZWhvbGRlcnMgd2hvIGJlbGlldmUsIGFzIHdlIGRvLCBpbiB0aGUgZ3JlYXQgcG90ZW50aWFsIG9mIHRoaXMgY29tcGFueS4gSWYgdGhlIEJvYXJkIHRha2VzIHRoaXMgYWN0aW9uLCB3ZSB3aWxsIGFwcGxhdWQgdGhlbSBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiBvbmUgb2YgdGhlIGdyZWF0ZXN0IGV4YW1wbGVzIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSB3ZSBoYXZlIHNlZW4gaW4gZml2ZSBkZWNhZGVzIG9mIHN1Y2Nlc3NmdWwgaW52ZXN0aW5nLlxyXG5TaW5jZXJlbHkgeW91cnMsXHJcbkNhcmwgQy4gSWNhaG4iLAogICJlbnRpdGllcyI6IFt7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA1MzI4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiR29vZ2xlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5ODk0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2lyaSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDQ2NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvdWdodCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNjAxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2FybCBJY2FobiIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ2FybF9JY2FobiIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMQogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzM5MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGltIENvb2siLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAwNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIwMzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTk3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTM1MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1RpbV9Db29rIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAxCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiUmVlZCBIYXN0aW5ncyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9SZWVkX0hhc3RpbmdzIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5MTgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU1OTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYwMTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDcyMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYyNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk1pbmkiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTmV0ZmxpeCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTMKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDEyMTMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTczMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZXMgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzczLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSWNhaG4gRW50ZXJwcmlzZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvSWNhaG5fRW50ZXJwcmlzZXMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExMTUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgUyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIlByb2R1Y3QiLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTkwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiRm9yZXN0IExhYnMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNDk3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIklEQyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogImlUdW5lcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpVHVuZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgIH0sCiAgICAidHlwZSI6ICJMb2NhdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODM1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODkwNSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDk1MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODYxMiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5NTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZXRmbGl4IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlR3aXR0ZXIiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTA2NzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBaXJwbGF5IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTU5MjQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZVhUIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDY3MiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkRlYXIgRmVsbG93IEFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDgzNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYW1zdW5nIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA1MzM2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2Ftc3VuZyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUsIFJlbGVhc2VzIE9wZW4gTGV0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJIYWluIENlbGVzdGlhbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9IYWluX0NlbGVzdGlhbF9Hcm91cCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2hlc2FwZWFrZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC41MQogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoZXNhcGVha2VfQmF5IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9SaXZlciJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExOTg2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU3RldmUgSm9icyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTU5MDEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTdGV2ZSBKb2JzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1N0ZXZlX0pvYnMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDcKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDMxMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYWlkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE3MDc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGhlIEJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTUwNzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDaGluZXNlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoaW5hIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db3VudHJ5Il0sCiAgICAgICJjb25maWRlbmNlIjogNi45MgogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogODM0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlNhbXN1bmcgRWxlY3Ryb25pY3MiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDk5MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MTA0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ0NTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQwNzcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTc3MzMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE3MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTg5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMTMzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NjI0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTA4MzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNTE5OSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzMjUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjE4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNDMzMSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NDYzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1MDUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDExNzgwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUwNzAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEyMDgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU0ODYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDI3NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTA4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU2NTAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEwOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MjIwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ3MjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODc1NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA5MTg4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAxNjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYzMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAyNTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTkyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMDU4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjE3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2NzUxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMjgxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMDMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2OTcxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIzMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNzc4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTk5NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDY2NzYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NjgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTIyMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE3ODE1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMjU0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDM3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTgxOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTA3MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjg4MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUxCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDI2NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwNDY3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5OTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0FwcGxlX0luYy4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL3NjaGVtYS5vcmcvT3JnYW5pemF0aW9uIiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55IiwgImh0dHA6Ly93d3cud2lraWRhdGEub3JnL2VudGl0eS9RNDMyMjkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9PcmdhbmlzYXRpb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MDY4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVW5pdGVkIFN0YXRlcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcyMTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZWQgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTIwOTIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJKb25hdGhhbiBJdmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjkKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY5CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0pvbmF0aGFuX0l2ZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTUiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1EyMTU2MjciLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iLCAiaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIiwgImh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNTA3OCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM1MTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcwODIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ4NTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMjU4MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzNTU1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NzYyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1ODg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4MjMxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NjExLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4NDU2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQwMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM3MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJAQ2FybF9DX0ljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA3NjAwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ3VwZXJ0aW5vIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ3VwZXJ0aW5vLF9DYWxpZm9ybmlhIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9DaXR5Il0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMwogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNjAyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5vcnRlbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ob3J0ZWwiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAzCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxMDA2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSGVyYmFsaWZlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU1CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0hlcmJhbGlmZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5OTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOREMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAi4oCUIENhcmwgSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY1CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU2MTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJJcGFkIEFpciIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxODY0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgQy4gSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NhcmxfSWNhaG4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE2OTQ3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTWljcm9zb2Z0IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUzNDUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJNaWNyb3NvZnQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTWljcm9zb2Z0IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMS4zCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUd2l0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ud2l0dGVyIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIjVjIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBbWF6b24iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTE1MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpQmVhY29uIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfV0KfQ==
|
45
|
+
http_version:
|
46
|
+
recorded_at: Thu, 31 May 2018 11:03:08 GMT
|
47
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,92 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.aylien.com/api/v1/elsa
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: text=Barack+Hussein+Obama+II+is+the+44th+and+current%0A++++++President+of+the+United+States%2C+and+the+first%0A++++++African+American+to+hold+the+office.
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Aylien Text API Ruby Gem 0.7.0
|
16
|
+
Content-Type:
|
17
|
+
- application/x-www-form-urlencoded
|
18
|
+
X-Aylien-Textapi-Application-Id:
|
19
|
+
- "<PASSWORD>"
|
20
|
+
X-Aylien-Textapi-Application-Key:
|
21
|
+
- "<PASSWORD>"
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 200
|
25
|
+
message: ''
|
26
|
+
headers:
|
27
|
+
Server:
|
28
|
+
- openresty/1.13.6.1
|
29
|
+
Date:
|
30
|
+
- Thu, 31 May 2018 11:03:09 GMT
|
31
|
+
Content-Type:
|
32
|
+
- application/json;charset=UTF-8
|
33
|
+
Content-Length:
|
34
|
+
- '1364'
|
35
|
+
Access-Control-Allow-Origin:
|
36
|
+
- "*"
|
37
|
+
Via:
|
38
|
+
- 1.1 google
|
39
|
+
Alt-Svc:
|
40
|
+
- clear
|
41
|
+
body:
|
42
|
+
encoding: UTF-8
|
43
|
+
string: |-
|
44
|
+
{
|
45
|
+
"text": "Barack Hussein Obama II is the 44th and current\n President of the United States, and the first\n African American to hold the office.",
|
46
|
+
"entities": [{
|
47
|
+
"mentions": [{
|
48
|
+
"offset": 71,
|
49
|
+
"confidence": 1.0,
|
50
|
+
"text": "United States",
|
51
|
+
"sentiment": {
|
52
|
+
"polarity": "neutral",
|
53
|
+
"confidence": 0.48
|
54
|
+
}
|
55
|
+
}],
|
56
|
+
"overall_sentiment": {
|
57
|
+
"polarity": "neutral",
|
58
|
+
"confidence": 0.48
|
59
|
+
},
|
60
|
+
"type": "Location",
|
61
|
+
"links": [{
|
62
|
+
"uri": "http://dbpedia.org/resource/United_States",
|
63
|
+
"provider": "dbpedia",
|
64
|
+
"types": ["http://dbpedia.org/ontology/Country"],
|
65
|
+
"confidence": 28.15
|
66
|
+
}]
|
67
|
+
}, {
|
68
|
+
"mentions": [{
|
69
|
+
"offset": 0,
|
70
|
+
"confidence": 1.0,
|
71
|
+
"text": "Barack Hussein Obama II",
|
72
|
+
"sentiment": {
|
73
|
+
"polarity": "positive",
|
74
|
+
"confidence": 0.56
|
75
|
+
}
|
76
|
+
}],
|
77
|
+
"overall_sentiment": {
|
78
|
+
"polarity": "positive",
|
79
|
+
"confidence": 0.56
|
80
|
+
},
|
81
|
+
"type": "Person",
|
82
|
+
"links": [{
|
83
|
+
"uri": "http://dbpedia.org/resource/Barack_Obama",
|
84
|
+
"provider": "dbpedia",
|
85
|
+
"types": ["http://dbpedia.org/ontology/Agent", "http://www.wikidata.org/entity/Q215627", "http://www.wikidata.org/entity/Q5", "http://schema.org/Person", "http://dbpedia.org/ontology/Person", "http://xmlns.com/foaf/0.1/Person"],
|
86
|
+
"confidence": 0.91
|
87
|
+
}]
|
88
|
+
}]
|
89
|
+
}
|
90
|
+
http_version:
|
91
|
+
recorded_at: Thu, 31 May 2018 11:03:09 GMT
|
92
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,53 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.aylien.com/api/v1/elsa
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: url=http%3A%2F%2Fwww.businessinsider.com%2Fcarl-icahn-open-letter-to-apple-2014-1
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Aylien Text API Ruby Gem 0.7.0
|
16
|
+
Content-Type:
|
17
|
+
- application/x-www-form-urlencoded
|
18
|
+
X-Aylien-Textapi-Application-Id:
|
19
|
+
- "<PASSWORD>"
|
20
|
+
X-Aylien-Textapi-Application-Key:
|
21
|
+
- "<PASSWORD>"
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 200
|
25
|
+
message: ''
|
26
|
+
headers:
|
27
|
+
Server:
|
28
|
+
- openresty/1.13.6.1
|
29
|
+
Date:
|
30
|
+
- Thu, 31 May 2018 11:03:14 GMT
|
31
|
+
Content-Type:
|
32
|
+
- application/json;charset=UTF-8
|
33
|
+
Content-Length:
|
34
|
+
- '54190'
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '400000'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '399994'
|
39
|
+
X-Ratelimit-Reset:
|
40
|
+
- '1527811200'
|
41
|
+
Access-Control-Allow-Origin:
|
42
|
+
- "*"
|
43
|
+
Via:
|
44
|
+
- 1.1 google
|
45
|
+
Alt-Svc:
|
46
|
+
- clear
|
47
|
+
body:
|
48
|
+
encoding: ASCII-8BIT
|
49
|
+
string: !binary |-
|
50
|
+
ewogICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyAkNTAwIE1pbGxpb24gTU9SRSBPZiBBcHBsZSwgUmVsZWFzZXMgT3BlbiBMZXR0ZXIgVG8gVGhlIENvbXBhbnlcbkNhcmwgSWNhaG4gY29udGludWVkIGhpcyBhc3NhdWx0IG9uIEFwcGxlIHRvZGF5LlxyXG5IZSBhbm5vdW5jZWQgb24gVHdpdHRlciB0aGF0IGhlIGJvdWdodCBhbm90aGVyICQ1MDAgbWlsbGlvbiB3b3J0aCBvZiBBcHBsZSBzdG9jaywgYnJpbmdpbmcgaGlzIHRvdGFsIHRvICQzLjYgYmlsbGlvbi5cclxuSGUgYWxzbyB3cm90ZSBhbiBvcGVuIGxldHRlciB0byBBcHBsZSBzaGFyZWhvbGRlcnMgZXhwbGFpbmluZyB3aHkgaGUgdGhpbmtzIEFwcGxlIG5lZWRzIHRvIHJhbXAgdXAgaXRzIHNoYXJlIGJ1eWJhY2tzLiBIZSBiZWxpZXZlcyBhIHNoYXJlIGJ1eWJhY2sgd291bGQgZWFzaWx5IGdvb3NlIHRoZSBjb21wYW55J3Mgc2hhcmUgcHJpY2UuwqBcclxuSGVyZSdzIHRoZSB0d2VldDpcclxuXHJcbkJvdWdodCBhbm90aGVyICQ1MDBtaWwgb2YgJEFBUEwgdGRheSwgYnJpbmdpbmcgb3VyIHRvdGFsIHRvICQzLjYgYmlsbGlvbi4gSWYgYm9hcmQgZG9lc27igJl0IHNlZSBBQVBM4oCZcyDigJhubyBicmFpbmVy4oCZIHZhbHVlIHdlIHN1cmUgZG8uXHJcbuKAlCBDYXJsIEljYWhuIChAQ2FybF9DX0ljYWhuKSBKYW51YXJ5IDIzLCAyMDE0XHJcblxyXG5BbmQgaGVyZSdzIHRoZSBsZXR0ZXI6XHJcbkRlYXIgRmVsbG93IEFwcGxlIFNoYXJlaG9sZGVycyxcclxuT3ZlciB0aGUgY291cnNlIG9mIG15IGxvbmcgY2FyZWVyIGFzIGFuIGludmVzdG9yIGFuZCBhcyBDaGFpcm1hbiBvZiBJY2FobiBFbnRlcnByaXNlcywgb3VyIGJlc3QgcGVyZm9ybWluZyBpbnZlc3RtZW50cyByZXN1bHQgZnJvbSBvcHBvcnR1bml0aWVzIHRoYXQgd2UgbGlrZSB0byBjYWxsIFwibm8gYnJhaW5lcnMuXCIgUmVjZW50IGV4YW1wbGVzIG9mIHN1Y2gg4oCcbm8gYnJhaW5lcnPigJ0gaGF2ZSBiZWVuIG91ciBpbnZlc3RtZW50cyBpbiBOZXRmbGl4LCBIYWluIENlbGVzdGlhbCwgQ2hlc2FwZWFrZSwgRm9yZXN0IExhYnMgYW5kIEhlcmJhbGlmZSwganVzdCB0byBuYW1lIGEgZmV3LiBJbiBvdXIgb3BpbmlvbiwgYSBncmVhdCBleGFtcGxlIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSBpbiB0b2RheeKAmXMgbWFya2V0IGlzIEFwcGxlLiBUaGUgUyA1MDDigJlzIHByaWNlIHRvIGVhcm5pbmdzIG11bHRpcGxlIGlzIDcxJSBoaWdoZXIgdGhhbiBBcHBsZeKAmXMsIGFuZCBpZiBBcHBsZSB3ZXJlIHNpbXBseSB2YWx1ZWQgYXQgdGhlIHNhbWUgbXVsdGlwbGUsIGl0cyBzaGFyZSBwcmljZSB3b3VsZCBiZSAkODQwLCB3aGljaCBpcyA1MiUgaGlnaGVyIHRoYW4gaXRzIGN1cnJlbnQgcHJpY2UuMSBUaGlzIGlzIGEgZHJhbWF0aWMgdmFsdWF0aW9uIGRpc2Nvbm5lY3QgdGhhdCBzaW1wbHkgbWFrZXMgbm8gc2Vuc2UgdG8gdXMsIGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBjb21wYW55IGFncmVlcyB3aXRoIHVzIG9uIHRoaXMgcG9pbnQuIFRpbSBDb29rIGhpbXNlbGYgaGFzIGV4cHJlc3NlZCBvbiBtb3JlIHRoYW4gb25lIG9jY2FzaW9uIHRoYXQgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQsIGFuZCBhcyB0aGUgY29tcGFueSBzdGF0ZXMsIGl0IGFscmVhZHkgaGFzIGluIHBsYWNlIOKAnHRoZSBsYXJnZXN0IHNoYXJlIHJlcHVyY2hhc2UgYXV0aG9yaXphdGlvbiBpbiBoaXN0b3J5LuKAnSBXZSBiZWxpZXZlLCBob3dldmVyLCB0aGF0IHRoaXMgc2hhcmUgcmVwdXJjaGFzZSBhdXRob3JpemF0aW9uIGNhbiBhbmQgc2hvdWxkIGJlIGV2ZW4gbGFyZ2VyLCBhbmQgZWZmZWN0dWF0aW5nIHRoYXQgZm9yIHRoZSBiZW5lZml0IG9mIGFsbCBvZiB0aGUgY29tcGFueeKAmXMgc2hhcmVob2xkZXJzIGlzIHRoZSBzb2xlIGludGVudGlvbiBvZiBvdXIgcHJvcG9zYWwuIFRoZSBjb21wYW55IGhhcyByZWNvbW1lbmRlZCB2b3RpbmcgYWdhaW5zdCBvdXIgcHJvcG9zYWwgZm9yIHZhcmlvdXMgcmVhc29ucy4gSXQgc2VlbXMgdG8gdXMgdGhhdCB0aGUgYmFzaXMgb2YgaXRzIGFyZ3VtZW50IGFnYWluc3Qgb3VyIHByb3Bvc2FsIGlzIHRoYXQgdGhlIGNvbXBhbnkgYmVsaWV2ZXMsIGJlY2F1c2Ugb2YgdGhlIOKAnGR5bmFtaWMgY29tcGV0aXRpdmUgbGFuZHNjYXBl4oCdIGFuZCBiZWNhdXNlIGl0cyDigJxyYXBpZCBwYWNlIG9mIGlubm92YXRpb24gcmVxdWlyZVtzXSB1bnByZWNlZGVudGVkIGludmVzdG1lbnQsIGZsZXhpYmlsaXR5IGFuZCBhY2Nlc3MgdG8gcmVzb3VyY2Vz4oCdLCBpdCBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBpdHMgcmVwdXJjaGFzZSBwcm9ncmFtLiBBc3N1bWluZyB0aGlzIGluZGVlZCBpcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYW554oCZcyBhcmd1bWVudCwgd2UgZmluZCBpdHMgcG9zaXRpb24gb3Zlcmx5IGNvbnNlcnZhdGl2ZSAoYWxtb3N0IHRvIHRoZSBwb2ludCBvZiBiZWluZyBpcnJhdGlvbmFsKSwgd2hlbiB3ZSBjb25zaWRlciB0aGF0IHRoZSBjb21wYW55IGhhZCAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYXMgb2YgU2VwdGVtYmVyIDI4LCAyMDEzIGFuZCB0aGF0IGNvbnNlbnN1cyBlYXJuaW5ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWxtb3N0ICQ0MCBiaWxsaW9uIG5leHQgeWVhci4gR2l2ZW4gdGhpcyBtYXNzaXZlIG5ldCBjYXNoIHBvc2l0aW9uIGFuZCByb2J1c3QgZWFybmluZ3MgZ2VuZXJhdGlvbiwgQXBwbGUgaXMgcGVyaGFwcyB0aGUgbW9zdCBvdmVyY2FwaXRhbGl6ZWQgY29tcGFueSBpbiBjb3Jwb3JhdGUgaGlzdG9yeSwgZnJvbSBvdXIgcGVyc3BlY3RpdmUuIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBsaXF1aWRpdHkgaXQgbWF5IHJlcXVpcmUgd2l0aCByZXNwZWN0IHRvIOKAnHVucHJlY2VkZW50ZWQgaW52ZXN0bWVudCwgZmxleGliaWxpdHkgYW5kIGFjY2VzcyB0byByZXNvdXJjZXPigJ0gZm9yIGlubm92YXRpb24gbW92aW5nIGZvcndhcmQsIHdlIGJlbGlldmUgdGhlIHVucHJlY2VkZW50ZWQgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGN1cnJlbnRseSBvdmVyY2FwaXRhbGl6ZWQgd291bGQgb3ZlcmNvbXBlbnNhdGUgZm9yIGFueSBzdWNoIGludmVzdG1lbnRzIChpbmNsdWRpbmcgcG9zc2libGUgaW52ZXN0bWVudHMgaW4gc3RyYXRlZ2ljIE0sIHRvIHdoaWNoIHRoZSBjb21wYW55IGRvZXMgbm90IHJlZmVyKS4gU2FpZCBhbm90aGVyIHdheSwgd2UgYmVsaWV2ZSB0aGF0IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgY29tcGFueeKAmXMgdW5wcmVjZWRlbnRlZGx5IGVub3Jtb3VzIG5ldCBjYXNoIGJhbGFuY2UsIHJvYnVzdCBhbm51YWwgZWFybmluZ3MsIGFuZCB0cmVtZW5kb3VzIGJvcnJvd2luZyBjYXBhY2l0eSBwcm92aWRlIG1vcmUgdGhhbiBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBhZmZvcmQgYm90aCB0aGUgdXNlIG9mIGNhc2ggZm9yIGFueSBuZWNlc3Nhcnkgb25nb2luZyBidXNpbmVzcy1yZWxhdGVkIGludmVzdG1lbnRzIGluIGFkZGl0aW9uIHRvIHRoZSBjYXNoIHVzZWQgZm9yIHRoZSBpbmNyZWFzZWQgc2hhcmUgcmVwdXJjaGFzZXMgcHJvcG9zZWQuXHJcbkl0IGlzIG91ciBiZWxpZWYgdGhhdCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEJvYXJkLCBvbiBiZWhhbGYgb2YgdGhlIGNvbXBhbnnigJlzIHNoYXJlaG9sZGVycywgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3VjaCBhIGxhcmdlIGFuZCB1bm1pc3Rha2FibGUgb3Bwb3J0dW5pdHkuIEluZGVlZCwgd2UgYmVsaWV2ZSB0aGF0IGJ5IGNob29zaW5nIG5vdCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtLCB0aGUgZGlyZWN0b3JzIGFyZSBhY3R1YWxseSBwZXJmb3JtaW5nIGEgZ3JlYXQgZGlzc2VydmljZSB0byB0aGUgb3duZXJzLCBlc3BlY2lhbGx5IHNtYWxsZXIgc2hhcmVob2xkZXJzIHdobyBtYXkgbm90IGJlIGluIGEgcG9zaXRpb24gdG8gYnV5IG1vcmUgc3RvY2sgdGhlbXNlbHZlcy4gTWVhbndoaWxlLCB3ZSBhcmUgaW4gYSBwb3NpdGlvbiB0byBjb250aW51ZSBidXlpbmcgc2hhcmVzIGluIHRoZSBtYXJrZXQgYXQgdG9kYXkncyBwcmljZSwgc28gcGVyaGFwcyB3ZSBzaG91bGQgdGhhbmsgdGhlIEJvYXJkIGZvciBub3QgYmVpbmcgbW9yZSBhZ2dyZXNzaXZlLCBhbmQgdGh1cyBhbGxvd2luZyB1cyB0byBhY2N1bXVsYXRlIGFuIGV2ZW4gbGFyZ2VyIGludmVzdG1lbnQgcG9zaXRpb24gYXQgYSBwcmljZSB0aGF0IHJlZmxlY3RzIHRoZSBhZm9yZW1lbnRpb25lZCB2YWx1YXRpb24gZGlzY29ubmVjdC4gSW4gZmFjdCwgb3ZlciB0aGUgcGFzdCB0d28gd2Vla3Mgd2UgcHVyY2hhc2VkICQxIGJpbGxpb24gbW9yZSBpbiBBcHBsZSBzaGFyZXMsICQ1MDAgbWlsbGlvbiBvZiB3aGljaCB3ZSBwdXJjaGFzZWQgdG9kYXksIGJyaW5naW5nIG91ciB0b3RhbCBvd25lcnNoaXAgcG9zaXRpb24gaW4gQXBwbGUgdG8gYSBjdXJyZW50IHZhbHVlIG9mIGFwcHJveGltYXRlbHkgJDMuNiBiaWxsaW9uLlxyXG5HaXZlbiB0aGUgZGVncmVlIHRvIHdoaWNoIEFwcGxlIGFwcGVhcnMgdW5kZXJ2YWx1ZWQgdG8gdXMsIHdlIGFsbW9zdCBmZWVsIHRoYXQgaXTigJlzIGEgd2FzdGUgb2YgdGltZSB0byBkZWJhdGUgdGhlIHBvaW50LiBBcyB3ZSBiZWxpZXZlIGl0IHRvIGJlIHRoZSBwcmVlbWluZW50IGFuZCBtb3N0IGlubm92YXRpdmUgY29uc3VtZXIgcHJvZHVjdHMgY29tcGFueSBpbiB0aGUgd29ybGQsIHdpdGggdGhlIGdyZWF0ZXN0IGJyYW5kLCBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyBpbiB0aGUgd29ybGQsIEFwcGxlIGhhcyBoYWQgdHJlbWVuZG91cyBncm93dGggdG8gZGF0ZSwgYW5kIHdlIGZhaWwgdG8gc2VlIHdoeSB0aGlzIGdyb3d0aCB3b3VsZCBub3QgY29udGludWUgbW92aW5nIGZvcndhcmQuIFRoZSBpbmR1c3RyeSAoc21hcnRwaG9uZXMgYW5kIHRhYmxldHMpIGlzIGV4cGVjdGVkIHRvIGdyb3cgdm9sdW1lIGF0IGEgMTUlIGNvbXBvdW5kZWQgYW5udWFsIGdyb3d0aCByYXRlIGZyb20gMjAxMyB0aHJvdWdoIDIwMTcgYWNjb3JkaW5nIHRvIElEQy4gV2UgYmVsaWV2ZSBBcHBsZSBzaG91bGQgY29udGludWUgdG8gYmVuZWZpdCBmcm9tIHRoaXMgc2VjdWxhciBncm93dGgsIGFzIGxhc3QgeWVhciwgODUlIG9mIEFwcGxl4oCZcyByZXZlbnVlcyBjYW1lIGZyb20gc21hcnRwaG9uZXMsIHRhYmxldHMsIGFuZCByZWxhdGVkIHNvZnR3YXJlLCBzZXJ2aWNlcywgYW5kIGFjY2Vzc29yaWVzLiBUaGUgbmF5c2F5ZXJzIHF1ZXN0aW9uIHdoZXRoZXIgQXBwbGUgd2lsbCBiZSBhYmxlIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgZ3Jvd3RoIHdpdGhvdXQgc2FjcmlmaWNpbmcgcHJpY2luZyBhbmQgZ3Jvc3MgbWFyZ2lucywgZXNwZWNpYWxseSB3aXRoIGNvbXBldGl0aW9uIGZyb20gR29vZ2xlLCBTYW1zdW5nLCBNaWNyb3NvZnQsIEFtYXpvbiBhbmQgQ2hpbmVzZSBtYW51ZmFjdHVyZXJzLiBPdXIgcmVzcG9uc2UgdG8gdGhlbSBpcyB0aGF0IHRoZSBhbnN3ZXIgaXMgYWxyZWFkeSBldmlkZW50IHRvIHVzIGZyb20gdGhlIGNvbnRpbnVpbmcgbG95YWx0eSBvZiBBcHBsZeKAmXMgZ3Jvd2luZyBjdXN0b21lciBiYXNlLiBUaGUgaGlnaGx5IHN1Y2Nlc3NmdWwgZXZvbHV0aW9uYXJ5IChub3QgcmV2b2x1dGlvbmFyeSkgaW50cm9kdWN0aW9ucyBvZiB0aGUgaVBob25lIDVzIGFuZCA1YyBhbmQgSXBhZCBBaXIgYW5kIE1pbmksIHByb3ZlIHRvIHVzIHRoYXQgQXBwbGUgY291bGQsIGZvciB0aGUgbW9zdCBwYXJ0LCBtYWludGFpbiBwcmljaW5nIGFuZCBncm9zcyBtYXJnaW4gYXMgd2UgYmVsaWV2ZSBjb25zdW1lcnMgYXJlIHdpbGxpbmcgdG8gcGF5IGEgcmVhc29uYWJsZSBwcmVtaXVtIGZvciB0aGUgd29ybGTigJlzIGJlc3Qgc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuIFRoZSBydW1vcmVkIGZ1dHVyZSBpbnRyb2R1Y3Rpb24gb2YgcHJvZHVjdCBsaW5lIGV4dGVuc2lvbnMgd2l0aCBsYXJnZXIgc2NyZWVucyBmb3IgYm90aCB0aGUgaVBob25lIGFuZCBpUGFkIHdvdWxkIGZ1cnRoZXIgc3VwcG9ydCB0aGlzIHZpZXcuMiBJbiBmYWN0LCBhIHJlY2VudCBzdHVkeSBmcm9tIE5EQyBzaG93cyB0aGF0IHRoZSBpUGhvbmUgYWNjb3VudGVkIGZvciA0MiUgb2Ygc21hcnRwaG9uZSB1c2VycyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhdCB0aGUgZW5kIG9mIDIwMTMsIHVwIGEgc3RhZ2dlcmluZyAyMCUgZnJvbSB0aGUgcHJpb3IgeWVhci4gRGVzcGl0ZSBpdHMgZ3JlYXQgc2NhbGUgYW5kIG5hcnJvdyBmb2N1cywgQXBwbGUgaGFzIGFuIG9wZXJhdGluZyBtYXJnaW4gb2YganVzdCAyOC41JS4gV2UgYmVsaWV2ZSBpdHMgY3VzdG9tZXJz4oCZIHdpbGxpbmduZXNzIHRvIHBheSBhIHByZW1pdW0gcHJpY2UgZm9yIHRoZSB3b3JsZOKAmXMgZ3JlYXRlc3QgcHJvZHVjdHMgc2hvdWxkIGVuYWJsZSBBcHBsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZXhwZWN0ZWQgdm9sdW1lIGdyb3d0aCBvZiB0aGVzZSBjYXRlZ29yaWVzIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgbGFyZ2VseSBtYWludGFpbmluZyBpdHMgYXZlcmFnZSBzZWxsaW5nIHByaWNlcyBhbmQgZ3Jvc3MgbWFyZ2lucy4gQW5kLCBhcyBzb2Z0d2FyZSBhbmQgc2VydmljZXMgaW1wcm92ZSBhbmQgYmVjb21lIGV2ZW4gbW9yZSBpbXBvcnRhbnQgdG8gY29uc3VtZXJzIGluIHRoZSBmdXR1cmUsIHdlIGV4cGVjdCBjdXN0b21lciBsb3lhbHR5IHRvIHN0cmVuZ3RoZW4gZnVydGhlci5cclxuRXZlbiBpZiB0aGUgc3RvcnkgZW5kZWQgd2l0aCBBcHBsZeKAmXMgZXhpc3RpbmcgcHJvZHVjdCBhbmQgc29mdHdhcmUgbGluZXMsIHdlIHdvdWxkIHN0aWxsIGNob29zZSB0byBtYWtlIEFwcGxlIG91ciBsYXJnZXN0IGludmVzdG1lbnQuIEJ1dCB0aGVyZSBpcyBtb3JlIHRvIHRoZSBzdG9yeSEgVGltIENvb2sga2VlcHMgc2F5aW5nIHRoYXQgaGUgZXhwZWN0cyB0byBpbnRyb2R1Y2Ug4oCcbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVz4oCdIGFuZCB5ZXQgdmVyeSBmZXcgcGVvcGxlIHNlZW0gdG8gYmUgbGlzdGVuaW5nLiBXZeKAmXJlIG5vdCBhd2FyZSBvZiBhIHNpbmdsZSBXYWxsIFN0cmVldCBhbmFseXN0IHdobyBpbmNsdWRlcyDigJxuZXcgcHJvZHVjdHMgaW4gbmV3IGNhdGVnb3JpZXPigJ0gb3IgbmV3IHNlcnZpY2VzIGluIGFueSBvZiB0aGVpciBmaW5hbmNpYWwgcHJvamVjdGlvbnMsIGV2ZW4gdGhvdWdoIEFwcGxlIGNsZWFybHkgaGFzIGFuIGltcHJlc3NpdmUgdHJhY2sgcmVjb3JkIG9mIHN1Y2ggbmV3IGNhdGVnb3J5IHByb2R1Y3QgaW50cm9kdWN0aW9ucywgZXZlbiBpZiBpdCBkb2VzIHNvIHJhcmVseS4gQXBwbGUgcmVsZWFzZWQgdGhlIGlQaG9uZSBpbiAyMDA3IGFuZCB0aGUgaVBhZCBmaXZlIHllYXJzIGxhdGVyIGluIDIwMTIsIGJvdGggc28gZXh0cmFvcmRpbmFyaWx5IHN1Y2Nlc3NmdWwgdGhhdCB0b2RheSB0aGV5IHJlcHJlc2VudCB0aGUgbWFqb3JpdHkgb2YgdGhlIGNvbXBhbnnigJlzIHJldmVudWUuIFRpbSBDb29r4oCZcyBjb21tZW50cywgYWxvbmcgd2l0aCBhZHZhbmNlbWVudHMgaW4gZW5hYmxpbmcgdGVjaG5vbG9naWVzLCBsZWFkIHVzIHRvIGJlbGlldmUgdGhhdCB3ZSBtYXkgc2VlIGluIHRoZSBub3QgdG9vIGRpc3RhbnQgZnV0dXJlIHdoYXQgbmV3IGdyb3VuZGJyZWFraW5nIHByb2R1Y3RzIHRoZXnigJl2ZSBiZWVuIHdvcmtpbmcgb24gZGV2ZWxvcGluZyBpbiBDdXBlcnRpbm8gdGhlc2UgbGFzdCBzZXZlcmFsIHllYXJzLjNcclxuVG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHNjYWxlIG9mIHRoZSBvcHBvcnR1bml0eSB0aGF0IHN0ZW1zIGZyb20gbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVzLCBsZXTigJlzIHRha2UgYSBtb21lbnQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIEFwcGxlIHRlbGV2aXNpb24uIFRoZSBtYWpvciBlbGVjdHJvbmljcyBjb21wYW5pZXMgYXJlIG5vdyBmb2N1c2VkIG9uIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBUVnMgYXMgdGhlaXIgbmV4dCBiaWcgb3Bwb3J0dW5pdHkuIFVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBpcyBleHBlY3RlZCB0byBvZmZlciBhIGxldmVsIG9mIGltYWdlIGNsYXJpdHkgdGhhdCBpcyBzdXBlcmlvciB0byB0b2RheeKAmXMgaGlnaCBkZWZpbml0aW9uIHRlbGV2aXNpb25zIGZvciBzY3JlZW4gc2l6ZXMgNTUgaW5jaGVzIGFuZCBhYm92ZS4gVG8gZGF0ZSwgdGhlIGJhcnJpZXIgdG8gbWFzcyBtYXJrZXQgYWRvcHRpb24gb2YgdWx0cmEgaGlnaCBkZWZpbml0aW9uIGhhcyBiZWVuIHRoZSBwcmljZSBnYXAgYmV0d2VlbiBpdCBhbmQgcmVndWxhciBoaWdoIGRlZmluaXRpb24sIGJ1dCB0aGF0IHByaWNlIGdhcCBpcyBjbG9zaW5nIGFuZCB3aWxsIHNvb24gYmUgZGUgbWluaW1pcy4gVGhlIGNsb3Npbmcgb2YgdGhpcyBwcmljZSBnYXAgaXMgc3VwcG9ydGVkIGJ5IHN0YXRlbWVudHMgbWFkZSBieSB0aGUgQ28tQ0VPIG9mIFNhbXN1bmcgRWxlY3Ryb25pY3MsIHdobyBleHBlY3RzIHRoZSBwcmljZSBnYXAgdG8gZmFsbCB0byAxMCUgYnkgdGhlIGVuZCBvZiB0aGlzIHllYXIuIFdoaWxlIGNhYmxlIGNvbXBhbmllcyB3aWxsIGxpa2VseSBiZSBzbG93IHRvIHVwZ3JhZGUgdGhlaXIgbGluZWFyIFRWIGluZnJhc3RydWN0dXJlIGR1ZSB0byBjb3N0LCB2aWRlbyBjb250ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgaW50ZXJuZXQgdmlhIHNlcnZpY2VzIGxpa2UgTmV0ZmxpeCBhbmQgb3RoZXJzLiBXZSBiZWxpZXZlIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiByZXByZXNlbnRzIGEgbWFqb3IgY2F0YWx5c3QgZm9yIHRoZSBuZXh0IFRWIHJlcGxhY2VtZW50IGN5Y2xlIGFuZCBhIHByb21pc2luZyBtb21lbnQgZm9yIEFwcGxlIHRvIGludHJvZHVjZSBpdHMgZmlyc3QgbmV3IHByb2R1Y3QgaW4gdGhpcyBjYXRlZ29yeS4gUmVlZCBIYXN0aW5ncywgQ0VPIG9mIE5ldGZsaXgsIGhhcyByZWZlcmVuY2VkIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBhcyBhIG1ham9yIGNhdGFseXN0IGZvciBOZXRmbGl4IGdvaW5nIGZvcndhcmQuIFdoaWxlIHRoaXMgaXMgdHJ1ZSBmb3IgTmV0ZmxpeCwgd2UgYmVsaWV2ZSBpdCBpcyBhbHNvIHRydWUgZm9yIEFwcGxlLCBub3QganVzdCBmb3IgaXRzIGhhcmR3YXJlIGJ1dCBhbHNvIGZvciBzZWxsaW5nIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBtb3ZpZXMgYW5kIHNob3dzIG9uIGlUdW5lcyB0aHJvdWdoIHRoZSBpbnRlcm5ldC4gV2l0aCAyMzggbWlsbGlvbiBUVnMgc29sZCBnbG9iYWxseSBpbiAyMDEyLCBpdCB3b3VsZCBub3Qgc3VycHJpc2UgdXMgaWYgQXBwbGUgY291bGQgc2VsbCAyNSBtaWxsaW9uIG5ldyBBcHBsZSB1bHRyYSBoaWdoIGRlZmluaXRpb24gdGVsZXZpc2lvbnMgYXQgJDEsNjAwIHBlciB1bml0LCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYm90aCBpdHMgdHJhY2sgcmVjb3JkIG9mIGludHJvZHVjaW5nIGJlc3QgaW4gY2xhc3MgcHJvZHVjdHMgYW5kIGl0cyBtYXJrZXQgc2hhcmUgaW4gc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuNCBBdCBhIGdyb3NzIG1hcmdpbiBvZiAzNy43JSwgd2hpY2ggd291bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgdGhlIG92ZXJhbGwgY29tcGFueSwgc3VjaCBhIGRlYnV0IHdvdWxkIGFkZCAkNDAgYmlsbGlvbiBvZiByZXZlbnVlcyBhbmQgJDE1IGJpbGxpb24gdG8gb3BlcmF0aW5nIGluY29tZSBhbm51YWxseS41XHJcblRoZSBwb3NzaWJpbGl0eSBvZiBhIHRlbGV2aXNpb24gcmVwcmVzZW50cyBvbmx5IG9uZSBvcHBvcnR1bml0eSBmb3IgdGhlIGNvbXBhbnkgdGhhdCBzdGVtcyBmcm9tIG5ldyBwcm9kdWN0cyBpbiBuZXcgY2F0ZWdvcmllcy4gV2hpbGUgd2Ugd29u4oCZdCBnbyB0aHJvdWdoIGFsbCBvZiB0aGVtIGhlcmUsIHdlIHNlZSBzZXZlcmFsIG1ham9yIG9wcG9ydHVuaXRpZXMgaW4gaGFyZHdhcmUgYWxvbmUuIFdpdGggYWR2YW5jZW1lbnRzIGluIG1pbmlhdHVyaXphdGlvbiBhbmQgY29udGludWVkIGltcHJvdmVtZW50cyBpbiBTaXJpLCBpdCBzZWVtcyBvYnZpb3VzIHRvIHVzIHRoYXQgQXBwbGUgaGFzIGEgY29tcGVsbGluZyBvcHBvcnR1bml0eSBpbiB0aGUgZXhjaXRpbmcgYXJlYSBvZiB3ZWFyYWJsZSBkZXZpY2VzLCBzdXBwb3J0ZWQgYnkgcnVtb3JzIHRoYXQgQXBwbGUgaXMgZGV2ZWxvcGluZyBhIHNtYXJ0d2F0Y2ggKGFzIFRpbSBDb29rIGhpbXNlbGYgc2FpZCB0aGUgd3Jpc3QgaXMg4oCcYW4gYXJlYSBvZiBncmVhdCBpbnRlcmVzdCBmb3IgQXBwbGXigJ0pLiBXaGlsZSBtYW55IGNvbnNpZGVyIEFwcGxlIGEgaGFyZHdhcmUgY29tcGFueSwgdG8gcGlnZW9uaG9sZSBpdCBhcyBzdWNoIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSBpbiBvdXIgb3Bpbmlvbi4gQXBwbGUgaGFzIGJ1aWx0IGFuIGVjb3N5c3RlbSBvZiBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyB0aGF0IHdlIGJlbGlldmUgY29sbGVjdGl2ZWx5IHJlcHJlc2VudHMgdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBjb25zdW1lciBwcm9kdWN0IHBsYXRmb3JtIGluIHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBjb25zdW1lci1mYWNpbmcgdGVjaG5vbG9naWVzLiBBbmQgYXMgQXBwbGXigJlzIGN1c3RvbWVyIGJhc2UgY29udGludWVzIHRvIGVuam95IHRoZSB1c2Ugb2YgdGhpcyBlY29zeXN0ZW0sIHN0b3JpbmcgbWVkaWEgaW4gdGhlIGNsb3VkIGFuZCBtb3ZpbmcgaXQgZnJvbSBvbmUgQXBwbGUgZGV2aWNlIHRvIGFub3RoZXIgYXMgZG9pbmcgc28gYmVjb21lcyBpbmNyZWFzaW5nbHkgY29udmVuaWVudCB3aXRoIGlubm92YXRpb25zIHN1Y2ggYXMgQWlycGxheSAoYXMganVzdCBvbmUgc2ltcGxlIGV4YW1wbGUgb2YgdGhpcyBlY29zeXN0ZW3igJlzIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSksIHdlIGJlbGlldmUgdGhhdCBjdXN0b21lciBiYXNlIGdyb3dzIGluY3JlYXNpbmdseSBsb3lhbCBhbmQgZXhjaXRlZCBmb3IgdGhlIG5leHQgQXBwbGUgcHJvZHVjdCByZWxlYXNlLCBtYWtpbmcgaXQgYW4gYXNzZXQgaW4gYW5kIG9mIGl0c2VsZiB0aGF0IGdyb3dzIGFuZCBiZWNvbWVzIGluY3JlYXNpbmdseSB2YWx1YWJsZS4gSW5kZWVkLCB3ZSBiZWxpZXZlIGFueSBuZXcgc29mdHdhcmUgc2VydmljZSB0aGF0IG9mZmVycyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGN1c3RvbWVyIGJhc2UgYmVjb21lcyBhIGxhcmdlIG9wcG9ydHVuaXR5IGZvciBBcHBsZSB0byBpbnRyb2R1Y2UgYXMgYSByZXZvbHV0aW9uYXJ5IGFuZCBkaXNydXB0aXZlIGJvbHQtb24gdG8gdGhlIGVjb3N5c3RlbS4gQXMganVzdCBvbmUgb2YgbWFueSBwb3NzaWJsZSBleGFtcGxlcyBvZiB0aGlzIHBoZW5vbWVub24sIEFwcGxlIGNvdWxkIGludHJvZHVjZSBhIG5leHQgZ2VuZXJhdGlvbiBwYXltZW50cyBzb2x1dGlvbi4gSW4gdGVybXMgb2Ygd2hldGhlciB0aGUgbWFya2V0cGxhY2UgaXMgd2VsbCBhZGRyZXNzZWQgYnkgbW9iaWxlIHBheW1lbnRzIHNvbHV0aW9ucywgVGltIENvb2sgaGFzIHNhaWQg4oCcSSB0aGluayBpdCBpcyBpbiBpdHMgaW5mYW5jeeKApiBJIHRoaW5rIGl0IGlzIGp1c3QgZ2V0dGluZyBzdGFydGVkIGFuZCBqdXN0IG9mIG91dCBvZiB0aGUgc3RhcnRpbmcgYmxvY2su4oCdIFdpdGggdGhlIGZpbmdlcnByaW50IHNlbnNvciwgaUJlYWNvbiwgNTc1KyBtaWxsaW9uIGNyZWRpdCBjYXJkIG51bWJlcnMgc3RvcmVkIGluIGlUdW5lcywgYW5kIEFwcGxl4oCZcyBob21vZ2VuZW91cyBpT1MgaW5zdGFsbGVkIGJhc2Ugd2l0aCA3OSUgb2YgZGV2aWNlcyB1c2luZyBpT1MgNywgd2UgYmVsaWV2ZSBhIHJldm9sdXRpb25hcnkgcGF5bWVudHMgc29sdXRpb24gaXMgbm93IGEgdmVyeSByZWFsIG9wcG9ydHVuaXR5IHRoYXQgdGhlIGNvbXBhbnkgY291bGQgY2hvb3NlIHRvIHB1cnN1ZS4gV2l0aCByZXNwZWN0IHRvIGFsbCBvZiBBcHBsZeKAmXMgbmV3IGFuZCBleGlzdGluZyBvcHBvcnR1bml0aWVzIGZvciBncm93dGgsIHRoZXkgd2lsbCBvbmx5IHByb3ZlIHRvIGJlIHN1Y2Nlc3NmdWwgd2l0aCBzdHJvbmcgZXhlY3V0aW9uIGZyb20gdGhlIGNvbXBhbnnigJlzIG1hbmFnZW1lbnQsIGluIHdob20gd2UgaG9sZCBncmVhdCBjb25maWRlbmNlLiBOYXlzYXllcnMgc2F5IFRpbSBDb29rIGlzIG5vdCBTdGV2ZSBKb2JzLCBhbmQgdGhleeKAmXJlIGFic29sdXRlbHkgcmlnaHQuIEhlIGlzIFRpbSBDb29rIGFuZCB3ZSBiZWxpZXZlIGhlIGlzIGRvaW5nIGFuIGV4Y2VsbGVudCBqb2IsIGFuZCBKb25hdGhhbiBJdmUsIFNlbmlvciBWUCBvZiBEZXNpZ24sIGlzIEpvbmF0aGFuIEl2ZSBhbmQgd2UgYmVsaWV2ZSBoZeKAmXMgZG9pbmcgYW4gZXhjZWxsZW50IGpvYiwgZXRjZXRlcmEuXHJcbkluIHRoaXMgbGV0dGVyLCB3ZSBoYXZlIGFib3ZlIHN1bW1hcml6ZWQgd2h5IHdlIGJlbGlldmUgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQgaW4gb3JkZXIgdG8gZXhwcmVzcyBob3cgcmlkaWN1bG91cyBpdCBzZWVtcyB0byB1cyBmb3IgQXBwbGUgdG8gaG9yZGUgc28gbXVjaCBjYXNoIHJhdGhlciB0aGFuIHJlcHVyY2hhc2Ugc3RvY2sgKGFuZCB0aGVyZWJ5IHVzZSB0aGF0IGNhc2ggdG8gbWFrZSBhIGxhcmdlciBpbnZlc3RtZW50IGluIGl0c2VsZiBmb3IgdGhlIGJlbmVmaXQgb2YgYWxsIG9mIHRoZSBjb21wYW554oCZcyBzaGFyZWhvbGRlcnMpLiBJbiBpdHMgc3RhdGVtZW50IGluIG9wcG9zaXRpb24gdG8gb3VyIHByb3Bvc2FsLCB0aGUgY29tcGFueSBjbGFpbXMgdGhhdCDigJx0aGUgQm9hcmQgYW5kIG1hbmFnZW1lbnQgdGVhbSBoYXZlIGRlbW9uc3RyYXRlZCBhIHN0cm9uZyBjb21taXRtZW50IHRvIHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBhbmQgd2UgYmVsaWV2ZSB0aGF0IGlzIHRydWUsIGJ1dCB3ZSBhbHNvIGJlbGlldmUgdGhhdCBjb21taXRtZW50IGlzIG5vdCBzdHJvbmcgZW5vdWdoIGdpdmVuIHRoZSB1bmlxdWUgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGJvdGggdW5kZXJ2YWx1ZWQgYW5kIG92ZXJjYXBpdGFsaXplZC4gRnVydGhlcm1vcmUsIGl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYSBzaGFyZSByZXB1cmNoYXNlIGlzIG5vdCBzaW1wbHkgYW4gYWN0IG9mIOKAnHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBzaW5jZSBpdCBpcyBhbHNvIHRoZSBjb21wYW55IGVmZmVjdGl2ZWx5IG1ha2luZyBhbiBpbnZlc3RtZW50IGluIGl0c2VsZi4gVG8gdXMsIGFzIGxvbmcgdGVybSBpbnZlc3RvcnMsIHRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2U6IGEgZGl2aWRlbmQgaXMgYSBwdXJlIHJldHVybiBvZiBjYXBpdGFsIHdoaWxlIGEgc2hhcmUgcmVwdXJjaGFzZSBpcyB0aGUgY29tcGFueSBtYWtpbmcgYW4gaW52ZXN0bWVudCBpbiBpdHNlbGYgYnkgYnV5aW5nIHNoYXJlcyBpbiB0aGUgbWFya2V0IGF0IHRoZSBjdXJyZW50IHByaWNlLCB3aGljaCB3ZSBiZWxpZXZlIHRvIGJlIHVuZGVydmFsdWVkLCBmcm9tIHNoYXJlaG9sZGVycyB3aWxsaW5nIHRvIHNlbGwgYXQgdGhhdCBwcmljZSBmb3IgdGhlIGJlbmVmaXQgb2Ygc2hhcmVob2xkZXJzIHdobyBjaG9vc2UgdG8gcmVtYWluIGludmVzdG9ycyBmb3IgdGhlIGxvbmdlciB0ZXJtLiBBbmQgd2UgYXJlIGxvbmcgdGVybSBpbnZlc3RvcnMuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vIG9uZSBvbiB0aGUgQm9hcmQgc2VlbXMgdG8gYmUgYW4gZXhwZXJ0IGluIHRoZSB3b3JsZCBvZiBpbnZlc3RtZW50IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIGJhc2VkIG9uIG91ciByZWNvcmQsIHdlIGJlbGlldmUgZmV3IHdpbGwgYXJndWUgdGhhdCB3ZSBhcmUgZXhwZXJ0cyBpbiB0aGlzIGFyZWEsIGFuZCB3ZSBoYXZlIG5vIGRvdWJ0cyB0aGF0IHRoZSBCb2FyZCBpcyBkb2luZyBhIGdyZWF0IGRpc3NlcnZpY2UgdG8gaXRzIHNoYXJlaG9sZGVycyBieSBub3QgaW1tZWRpYXRlbHkgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgc2hhcmUgcmVwdXJjaGFzZSBwcm9ncmFtIGluIG9yZGVyIHRvIG1vcmUgZWZmZWN0aXZlbHkgdGFrZSBhZHZhbnRhZ2Ugb2Ygd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBsb3cgbWFya2V0IHZhbHVhdGlvbi5cclxuV2UgaGF2ZSBleHByZXNzZWQgYWJvdmUgd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBwcmltYXJ5IHJlYXNvbiBmb3Igbm90IHN1cHBvcnRpbmcgb3VyIHByb3Bvc2FsLiBDb252ZXJzZWx5LCBpdCBpcyBvdXIgYmVsaWVmIHRoYXQgQXBwbGXigJlzIGN1cnJlbnQgZXhjZXNzIGxpcXVpZGl0eSBpcyB3aXRob3V0IGhpc3RvcmljYWwgcHJlY2VkZW50IGFuZCBiZXlvbmQgcmVhc29uYWJsZSBjb21wYXJpc29uIHRvIGl0cyBwZWVycyBvciBvdGhlcndpc2UsIGFuZCBzdWNoIGRyYW1hdGljIG92ZXJjYXBpdGFsaXphdGlvbiBhZmZvcmRzIHRoZSBjb21wYW55IGVub3VnaCBleGNlc3MgbGlxdWlkaXR5IHRvIHJlcHVyY2hhc2UgdGhlIGFtb3VudCBvZiBzaGFyZXMgd2UgcHJvcG9zZWQuIEFwcGxl4oCZcyBleGlzdGluZyBjYXBpdGFsIHJldHVybiBwcm9ncmFtIGhhcyBqdXN0ICQzNyBiaWxsaW9uIHJlbWFpbmluZywgYW5kIHRoZSBjb21wYW55IGhhcyB1bnRpbCB0aGUgZW5kIG9mIDIwMTUgdG8gY29tcGxldGUgaXQuIFdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIHByb2dyYW0sIHRoZSBsYXJnZXN0IHBpbGUgb2YgY29ycG9yYXRlIGNhc2ggaW4gdGhlIHdvcmxkIGlzIGxpa2VseSB0byBncm93IGV2ZW4gbGFyZ2VyLCBhbmQgaWYgdGhlIHNoYXJlIHByaWNlIHJpc2VzLCB0aGlzIEJvYXJkIHdpbGwgaGF2ZSBtaXNzZWQgYSBncmVhdCBvcHBvcnR1bml0eSB0byB1c2UgbW9yZSBvZiB0aGF0IGhvYXJkZWQgY2FzaCB0byByZXB1cmNoYXNlIHNoYXJlcyBhdCBhbiBhdHRyYWN0aXZlIHZhbHVlLiBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBCb2FyZCB0byBmb2N1cyBvbiB0aGUgcmV0dXJuIG9mIGNhcGl0YWwgb24gYSBzdXN0YWluZWQgYmFzaXMsIGl0IGlzIGFsc28gaW1wb3J0YW50IGZvciB0aGUgQm9hcmQgdG8gZXZhbHVhdGUgd2hldGhlciBvciBub3QgaXRzIHNoYXJlIHByaWNlIGlzIHVuZGVydmFsdWVkIGFuZCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdCB3aXRoIHNoYXJlIHJlcHVyY2hhc2VzLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGJhbGFuY2Ugc2hlZXQgZXhoaWJpdHMgZHJhbWF0aWMgZXhjZXNzIGxpcXVpZGl0eSwgYXMgd2UgYmVsaWV2ZSBBcHBsZeKAmXMgZG9lcyB0b2RheS5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IHdpdGggc28gbXVjaCBvcHBvcnR1bml0eSwgaXQgd291bGQgYmUgcHJ1ZGVudCB0byBtYWludGFpbiBpdHMgZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSBSIG9yIG1ha2UgYWNxdWlzaXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdGhlIGZpbmFuY2lhbCBzdHJlbmd0aCBvZiBpdHMgY29tcGV0aXRvcnMuIFdlIGNvbXBsZXRlbHkgYWdyZWUgdGhhdCB0aGUgY29tcGFueSBtdXN0IGlubm92YXRlIGFuZCBzaG91bGQgYmUgZmxleGlibGUgdG8gbWFrZSBwcnVkZW50IHN0cmF0ZWdpYyBhY3F1aXNpdGlvbnMsIHlldCBldmVuIGFmdGVyIHRha2luZyBzdWNoIGZhY3RvcnMgaW50byBhY2NvdW50LCB3ZSBiZWxpZXZlIHRoYXQgdHJlbWVuZG91cyBleGNlc3MgbGlxdWlkaXR5IHJlbWFpbnMuIFdpdGggcmVzcGVjdCB0byBwb3NzaWJsZSBNICh0byB3aGljaCB0aGUgY29tcGFueSBkb2VzIG5vdCByZWZlciBpbiBpdHMgc3RhdGVtZW50KSwgZm9yIHRoZSBvcHBvcnR1bml0aWVzIGhpZ2hsaWdodGVkIGFib3ZlIChhIFRWLCBhIHdhdGNoLCBhIHBheW1lbnQgc2VydmljZSksIHdlIGZpbmQgaXQgZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBpZGVudGlmeSBhbnkgcG9zc2libGUgc3RyYXRlZ2ljIGFjcXVpc2l0aW9ucyBvZiBzY2FsZSB0aGF0IG1ha2Ugc2Vuc2UuIEZ1cnRoZXJtb3JlLCBzdWNoIGFjdGlvbiB3b3VsZCBzZWVtIHRvIGNvbmZsaWN0IHdpdGggQXBwbGXigJlzIGN1bHR1cmUgaGlzdG9yaWNhbGx5LiBBIHJlbWFya2FibGUgZmFjdCBpcyB0aGF0IHNpbmNlIHRoZSBCb2FyZCByZWFjcXVpcmVkIFN0ZXZlIEpvYnMgdGhyb3VnaCB0aGUgTmVYVCBhY3F1aXNpdGlvbiBmb3IgJDQyNyBtaWxsaW9uIGluIDE5OTcsIHRoZSBuZXh0IGxhcmdlc3QgYWNxdWlzaXRpb24gQXBwbGUgbWFkZSB3YXMgJDIuNiBiaWxsaW9uIGZvciBOb3J0ZWzigJlzIHBhdGVudCBwb3J0Zm9saW8uIEFtYXppbmdseSwgb3ZlciB0aGVzZSAxNyB5ZWFycywgQXBwbGUgbWFkZSBqdXN0ICQ3LjggYmlsbGlvbiB3b3J0aCBvZiBhY3F1aXNpdGlvbnMgaW4gdG90YWwgZHVyaW5nIHRoaXMgdGltZWZyYW1lLiBBcHBsZSBjbGVhcmx5IGhhcyBhIGxvbmcgaGlzdG9yeSBhbmQgY3VsdHVyZSBvZiBkZXZlbG9waW5nIGl0cyBpbm5vdmF0aW9uIGludGVybmFsbHksIHdoaWNoIGxlYWRzIHVzIHRvIGJlbGlldmUgdGhhdCB0aGUgY29tcGFueSB3aWxsIG5vdCBzZWVrIG91dCBsYXJnZSBhY3F1aXNpdGlvbnMgdG8gcHVyc3VlIGFueSBvZiB0aGUgb3Bwb3J0dW5pdGllcyBhYm91dCB3aGljaCB3ZSBoYXZlIHNwZWN1bGF0ZWQuIEluIHRlcm1zIG9mIHBheWluZyBmb3IgdGhlIG5lY2Vzc2FyeSBpbm5vdmF0aW9uIGludGVybmFsbHksIEFwcGxlIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlICQ0MCBiaWxsaW9uIG9mIGVhcm5pbmdzIG5leHQgeWVhciwgd2hpY2ggYWxyZWFkeSB0YWtlcyBpbnRvIGFjY291bnQgYW4gaW5jcmVhc2luZyBSIGV4cGVuc2UuIEluIG9yZGVyIHRvIGFkZHJlc3MgdGhlIGFyZ3VtZW50IHRoYXQgQXBwbGUgc2hvdWxkIHJlc2VydmUgZXhjZXNzIGxpcXVpZGl0eSB0byBtb3JlIGVmZmVjdGl2ZWx5IGNvbXBldGUgd2l0aCBzb21lIG9mIGl0cyBkZWVwLXBvY2tldGVkIGNvbXBldGl0b3JzLCB0aGVyZSBpcyBubyBkb3VidCB0aGF0IHNvbWUgb2YgdGhlbSBhbHNvIGhhdmUgc2lnbmlmaWNhbnQgZWFybmluZ3MgYW5kIG5ldCBjYXNoIG9uIHRoZWlyIGJhbGFuY2Ugc2hlZXRzICh3aGV0aGVyIG9yIG5vdCB0aGF0IGlzIGFwcHJvcHJpYXRlKS4gQnV0IEFwcGxlIGhhcyBtdWNoIG1vcmUuIFdoZW4gY29tcGFyZWQgdG8gaXRzIG5leHQgbGFyZ2VzdCBjb21wZXRpdG9yLCBNaWNyb3NvZnQsIGZvciBleGFtcGxlLCBBcHBsZSBoYXMgJDY4IGJpbGxpb24gbW9yZSBuZXQgY2FzaCBhbmQgaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgJDE4IGJpbGxpb24gbW9yZSBpbiBlYXJuaW5ncyBkdXJpbmcgMjAxNC5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IG11Y2ggb2YgaXRzIGNhc2ggYW5kIGVhcm5pbmdzIGFyZSBpbnRlcm5hdGlvbmFsIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBhIHJlcGF0cmlhdGlvbiB0YXggaWYgcmV0dXJuZWQgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgdG8gcmVwdXJjaGFzZSBzaGFyZXMuIFdoaWxlIHRoaXMgaXMgdHJ1ZSwgd2UgcXVlc3Rpb24gd2h5IHRoZSBjb21wYW55IHdvdWxkIG5vdCBzaW1wbHkgYm9ycm93IHRoZSBtb25leSBpbiB0aGUgVW5pdGVzIFN0YXRlcyB0byB0aGUgZXh0ZW50IGl0IGRlZW1zIGl0cyBkb21lc3RpYyBjYXNoIG9mICQzNiBiaWxsaW9uIGFuZCBkb21lc3RpYyBlYXJuaW5ncyBhcmUgaW5zdWZmaWNpZW50LiBHaXZlbiB0aGF0IHRoZSBjb21wYW55IGhhcyAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYW5kICQ0MCBiaWxsaW9uIG9mIGV4cGVjdGVkIGFubnVhbCBlYXJuaW5ncywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgaGFyZCB0byBmaW5kIGEgYmV0dGVyIHRpbWUgaW4gaGlzdG9yeSB0byBib3Jyb3cgbW9uZXksIGEgJDUwIGJpbGxpb24gc2hhcmUgcmVwdXJjaGFzZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgZmlzY2FsIHllYXIgMjAxNCBzZWVtcyBtb3JlIHRoYW4gcmVhc29uYWJsZSB0byB1cy4gVG9kYXksIEFwcGxl4oCZcyBvdXRzdGFuZGluZyB0ZW4geWVhciBib25kcyB5aWVsZCAzLjYzJSwgYW5kIGl0cyBmaXZlIHllYXIgYm9uZHMgeWllbGQgMiUuIEFwcGxlIGNvdWxkIGVpdGhlciBjb250aW51ZSB0byBjYXJyeSB0aGlzIGRlYnQsIHJlcGF5IGl0IGZyb20gaXRzIGRvbWVzdGljIGVhcm5pbmdzIG92ZXIgdGltZSwgb3IgcmVwYXRyaWF0ZSBjYXNoIGZyb20gYWJyb2FkIHVwb24gdGhlIHBhc3NhZ2Ugb2YgY29ycG9yYXRlIHRheCByZWZvcm0uXHJcblRoZSBjb21wYW55IGhhcyBzdGF0ZWQgdGhhdCBpdCBpcyDigJx1cGRhdGluZyBwZXJzcGVjdGl2ZXMgb24gaXRzIGNhcGl0YWwgcmV0dXJuIHByb2dyYW0gZm9yIDIwMTQgYW5kIGJleW9uZOKAnSBhbmQg4oCcY29sbGVjdGluZyBpbnB1dCBmcm9tIGEgdmVyeSBicm9hZCBiYXNlIG9mIHNoYXJlaG9sZGVycy7igJ0gV2UgYmVsaWV2ZSwgaWYgb3VyIHByb3Bvc2FsIHJlY2VpdmVzIG1ham9yaXR5IHNoYXJlaG9sZGVyIHN1cHBvcnQsIHRoYXQgdGhlIEJvYXJkIHNob3VsZCByZXNwZWN0IGl0IGFuZCBpbmNyZWFzZSB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtIGFzIHJlcXVlc3RlZC4gV2UgYmVsaWV2ZSB0aGlzIGFjdGlvbiB3aWxsIGdyZWF0bHkgZW5oYW5jZSB2YWx1ZSBmb3IgYWxsIGxvbmcgdGVybSBzaGFyZWhvbGRlcnMgd2hvIGJlbGlldmUsIGFzIHdlIGRvLCBpbiB0aGUgZ3JlYXQgcG90ZW50aWFsIG9mIHRoaXMgY29tcGFueS4gSWYgdGhlIEJvYXJkIHRha2VzIHRoaXMgYWN0aW9uLCB3ZSB3aWxsIGFwcGxhdWQgdGhlbSBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiBvbmUgb2YgdGhlIGdyZWF0ZXN0IGV4YW1wbGVzIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSB3ZSBoYXZlIHNlZW4gaW4gZml2ZSBkZWNhZGVzIG9mIHN1Y2Nlc3NmdWwgaW52ZXN0aW5nLlxyXG5TaW5jZXJlbHkgeW91cnMsXHJcbkNhcmwgQy4gSWNhaG4iLAogICJlbnRpdGllcyI6IFt7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA1MzI4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiR29vZ2xlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5ODk0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2lyaSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDQ2NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvdWdodCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNjAxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2FybCBJY2FobiIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ2FybF9JY2FobiIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMQogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzM5MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGltIENvb2siLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAwNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIwMzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTk3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTM1MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1RpbV9Db29rIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAxCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiUmVlZCBIYXN0aW5ncyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9SZWVkX0hhc3RpbmdzIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5MTgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU1OTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYwMTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDcyMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYyNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk1pbmkiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTmV0ZmxpeCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTMKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDEyMTMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTczMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZXMgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzczLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSWNhaG4gRW50ZXJwcmlzZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvSWNhaG5fRW50ZXJwcmlzZXMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExMTUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgUyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIlByb2R1Y3QiLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTkwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiRm9yZXN0IExhYnMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNDk3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIklEQyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogImlUdW5lcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpVHVuZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgIH0sCiAgICAidHlwZSI6ICJMb2NhdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODM1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODkwNSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDk1MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODYxMiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5NTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZXRmbGl4IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlR3aXR0ZXIiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTA2NzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBaXJwbGF5IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTU5MjQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZVhUIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDY3MiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkRlYXIgRmVsbG93IEFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDgzNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYW1zdW5nIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA1MzM2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2Ftc3VuZyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUsIFJlbGVhc2VzIE9wZW4gTGV0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJIYWluIENlbGVzdGlhbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9IYWluX0NlbGVzdGlhbF9Hcm91cCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2hlc2FwZWFrZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC41MQogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoZXNhcGVha2VfQmF5IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9SaXZlciJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExOTg2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU3RldmUgSm9icyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTU5MDEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTdGV2ZSBKb2JzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1N0ZXZlX0pvYnMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDcKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDMxMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYWlkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE3MDc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGhlIEJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTUwNzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDaGluZXNlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoaW5hIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db3VudHJ5Il0sCiAgICAgICJjb25maWRlbmNlIjogNi45MgogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogODM0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlNhbXN1bmcgRWxlY3Ryb25pY3MiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDk5MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MTA0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ0NTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQwNzcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTc3MzMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE3MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTg5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMTMzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NjI0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTA4MzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNTE5OSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzMjUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjE4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNDMzMSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NDYzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1MDUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDExNzgwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUwNzAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEyMDgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU0ODYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDI3NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTA4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU2NTAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEwOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MjIwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ3MjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODc1NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA5MTg4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAxNjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYzMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAyNTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTkyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMDU4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjE3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2NzUxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMjgxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMDMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2OTcxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIzMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNzc4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTk5NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDY2NzYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NjgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTIyMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE3ODE1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMjU0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDM3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTgxOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTA3MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjg4MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUxCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDI2NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwNDY3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5OTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0FwcGxlX0luYy4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL3NjaGVtYS5vcmcvT3JnYW5pemF0aW9uIiwgImh0dHA6Ly93d3cud2lraWRhdGEub3JnL2VudGl0eS9RNDMyMjkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9PcmdhbmlzYXRpb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MDY4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVW5pdGVkIFN0YXRlcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcyMTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZWQgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTIwOTIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJKb25hdGhhbiBJdmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjkKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY5CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0pvbmF0aGFuX0l2ZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTUiLCAiaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9BZ2VudCIsICJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTIxNTYyNyIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIiwgImh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNTA3OCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM1MTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcwODIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ4NTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMjU4MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzNTU1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NzYyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1ODg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4MjMxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NjExLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4NDU2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQwMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM3MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJAQ2FybF9DX0ljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA3NjAwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ3VwZXJ0aW5vIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ3VwZXJ0aW5vLF9DYWxpZm9ybmlhIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9DaXR5Il0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMwogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNjAyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5vcnRlbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ob3J0ZWwiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAzCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxMDA2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSGVyYmFsaWZlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU1CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0hlcmJhbGlmZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5OTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOREMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAi4oCUIENhcmwgSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY1CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU2MTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJJcGFkIEFpciIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxODY0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgQy4gSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NhcmxfSWNhaG4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE2OTQ3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTWljcm9zb2Z0IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUzNDUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJNaWNyb3NvZnQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTWljcm9zb2Z0IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMS4zCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUd2l0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ud2l0dGVyIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIjVjIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBbWF6b24iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTE1MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpQmVhY29uIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfV0KfQ==
|
51
|
+
http_version:
|
52
|
+
recorded_at: Thu, 31 May 2018 11:03:15 GMT
|
53
|
+
recorded_with: VCR 2.9.3
|
@@ -22,14 +22,12 @@ describe AylienTextApi::Client do
|
|
22
22
|
require_relative './classify'
|
23
23
|
require_relative './concepts'
|
24
24
|
require_relative './entities'
|
25
|
+
require_relative './elsa'
|
25
26
|
require_relative './extract'
|
26
27
|
require_relative './hashtags'
|
27
28
|
require_relative './language'
|
28
|
-
require_relative './related'
|
29
29
|
require_relative './sentiment'
|
30
30
|
require_relative './summarize'
|
31
|
-
require_relative './microformats'
|
32
|
-
require_relative './unsupervised_classify'
|
33
31
|
require_relative './combined'
|
34
32
|
require_relative './image_tags'
|
35
33
|
require_relative './classify_by_taxonomy'
|
@@ -0,0 +1,81 @@
|
|
1
|
+
describe "Elsa endpoint" do
|
2
|
+
before do
|
3
|
+
@url = "http://www.businessinsider.com/carl-icahn-open-letter-to-apple-2014-1"
|
4
|
+
@text = %q(Barack Hussein Obama II is the 44th and current
|
5
|
+
President of the United States, and the first
|
6
|
+
African American to hold the office.)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "shouldn't be nil with valid url" do
|
10
|
+
VCR.use_cassette('elsa_with_valid_url') do
|
11
|
+
result = @client.elsa(url: @url)
|
12
|
+
result.wont_be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "shouldn't be nil with text" do
|
17
|
+
VCR.use_cassette('elsa_with_text') do
|
18
|
+
result = @client.elsa(text: @text)
|
19
|
+
result.wont_be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "shouldn't be nil with value as valid url" do
|
24
|
+
VCR.use_cassette('elsa_with_value_as_valid_url') do
|
25
|
+
result = @client.elsa(@url)
|
26
|
+
result.wont_be_nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it "shouldn't be nil with value as text" do
|
31
|
+
VCR.use_cassette('elsa_with_value_as_text') do
|
32
|
+
result = @client.elsa(@text)
|
33
|
+
result.wont_be_nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should be nil with unauthenticated client" do
|
38
|
+
VCR.use_cassette('elsa_with_unauthenticated_client') do
|
39
|
+
result = @unauthenticated_client.elsa(text: @text)
|
40
|
+
result.must_be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should raise Forbidden with unauthenticated client" do
|
45
|
+
VCR.use_cassette('elsa_with_unauthenticated_client') do
|
46
|
+
proc {
|
47
|
+
@unauthenticated_client.elsa!(text: @text)
|
48
|
+
}.must_raise AylienTextApi::Error::Forbidden
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be nil with invalid client" do
|
53
|
+
VCR.use_cassette('elsa_with_invalid_client') do
|
54
|
+
result = @invalid_client.elsa(text: @text)
|
55
|
+
result.must_be_nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should raise Forbidden with invalid client" do
|
60
|
+
VCR.use_cassette('elsa_with_invalid_client') do
|
61
|
+
proc {
|
62
|
+
@invalid_client.elsa!(text: @text)
|
63
|
+
}.must_raise AylienTextApi::Error::Forbidden
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should be nil with invalid params" do
|
68
|
+
VCR.use_cassette('elsa_with_invalid_params') do
|
69
|
+
result = @client.elsa(wrong_param: @text)
|
70
|
+
result.must_be_nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should raise BadRequest with invalid params" do
|
75
|
+
VCR.use_cassette('elsa_with_invalid_params') do
|
76
|
+
proc {
|
77
|
+
@client.elsa!(wrong_param: @text)
|
78
|
+
}.must_raise AylienTextApi::Error::BadRequest
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aylien_text_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aylien Inc.
|
8
|
-
- Hamed Ramezanian
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2018-06-13 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
@@ -59,20 +58,19 @@ dependencies:
|
|
59
58
|
requirements:
|
60
59
|
- - "~>"
|
61
60
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
61
|
+
version: 2.3.2
|
63
62
|
type: :development
|
64
63
|
prerelease: false
|
65
64
|
version_requirements: !ruby/object:Gem::Requirement
|
66
65
|
requirements:
|
67
66
|
- - "~>"
|
68
67
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
68
|
+
version: 2.3.2
|
70
69
|
description: AYLIEN Text Analysis API is a package of Natural Language Processing
|
71
70
|
and Machine Learning-powered tools for analyzing and extracting various kinds of
|
72
71
|
information from text and images.
|
73
72
|
email:
|
74
73
|
- support@aylien.com
|
75
|
-
- hamed.r.nik@gmail.com
|
76
74
|
executables: []
|
77
75
|
extensions: []
|
78
76
|
extra_rdoc_files: []
|
@@ -126,6 +124,13 @@ files:
|
|
126
124
|
- spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml
|
127
125
|
- spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml
|
128
126
|
- spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml
|
127
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_invalid_client.yml
|
128
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_invalid_params.yml
|
129
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_text.yml
|
130
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_unauthenticated_client.yml
|
131
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_valid_url.yml
|
132
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_value_as_text.yml
|
133
|
+
- spec/fixtures/aylien_text_api/client/elsa_with_value_as_valid_url.yml
|
129
134
|
- spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml
|
130
135
|
- spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml
|
131
136
|
- spec/fixtures/aylien_text_api/client/entities_with_text.yml
|
@@ -159,20 +164,9 @@ files:
|
|
159
164
|
- spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
|
160
165
|
- spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
|
161
166
|
- spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
|
162
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
|
163
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
|
164
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
|
165
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
|
166
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
|
167
167
|
- spec/fixtures/aylien_text_api/client/rate_limits.yml
|
168
168
|
- spec/fixtures/aylien_text_api/client/rate_limits_with_invalid_client.yml
|
169
169
|
- spec/fixtures/aylien_text_api/client/rate_limits_with_unauthenticated_client.yml
|
170
|
-
- spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
|
171
|
-
- spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
|
172
|
-
- spec/fixtures/aylien_text_api/client/related_with_phrase.yml
|
173
|
-
- spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml
|
174
|
-
- spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml
|
175
|
-
- spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml
|
176
170
|
- spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml
|
177
171
|
- spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml
|
178
172
|
- spec/fixtures/aylien_text_api/client/sentiment_with_text.yml
|
@@ -188,30 +182,21 @@ files:
|
|
188
182
|
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
|
189
183
|
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
|
190
184
|
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
|
191
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
|
192
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
|
193
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
|
194
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
|
195
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
|
196
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
|
197
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
|
198
185
|
- spec/lib/aylien_text_api/absa.rb
|
199
186
|
- spec/lib/aylien_text_api/classify.rb
|
200
187
|
- spec/lib/aylien_text_api/classify_by_taxonomy.rb
|
201
188
|
- spec/lib/aylien_text_api/client_spec.rb
|
202
189
|
- spec/lib/aylien_text_api/combined.rb
|
203
190
|
- spec/lib/aylien_text_api/concepts.rb
|
191
|
+
- spec/lib/aylien_text_api/elsa.rb
|
204
192
|
- spec/lib/aylien_text_api/entities.rb
|
205
193
|
- spec/lib/aylien_text_api/extract.rb
|
206
194
|
- spec/lib/aylien_text_api/hashtags.rb
|
207
195
|
- spec/lib/aylien_text_api/image_tags.rb
|
208
196
|
- spec/lib/aylien_text_api/language.rb
|
209
|
-
- spec/lib/aylien_text_api/microformats.rb
|
210
197
|
- spec/lib/aylien_text_api/rate_limits.rb
|
211
|
-
- spec/lib/aylien_text_api/related.rb
|
212
198
|
- spec/lib/aylien_text_api/sentiment.rb
|
213
199
|
- spec/lib/aylien_text_api/summarize.rb
|
214
|
-
- spec/lib/aylien_text_api/unsupervised_classify.rb
|
215
200
|
- spec/spec_helper.rb
|
216
201
|
homepage: https://github.com/AYLIEN/aylien_textapi_ruby
|
217
202
|
licenses:
|
@@ -233,133 +218,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
218
|
version: '0'
|
234
219
|
requirements: []
|
235
220
|
rubyforge_project:
|
236
|
-
rubygems_version: 2.6
|
221
|
+
rubygems_version: 2.7.6
|
237
222
|
signing_key:
|
238
223
|
specification_version: 4
|
239
224
|
summary: AYLIEN Text Analysis API is a package of Natural Language Processing and
|
240
225
|
Machine Learning-powered tools for analyzing and extracting various kinds of information
|
241
226
|
from text and images.
|
242
|
-
test_files:
|
243
|
-
- spec/fixtures/aylien_text_api/client/absa_with_invalid_client.yml
|
244
|
-
- spec/fixtures/aylien_text_api/client/absa_with_invalid_params.yml
|
245
|
-
- spec/fixtures/aylien_text_api/client/absa_with_text.yml
|
246
|
-
- spec/fixtures/aylien_text_api/client/absa_with_unauthenticated_client.yml
|
247
|
-
- spec/fixtures/aylien_text_api/client/absa_with_valid_url.yml
|
248
|
-
- spec/fixtures/aylien_text_api/client/absa_with_value_as_text.yml
|
249
|
-
- spec/fixtures/aylien_text_api/client/absa_with_value_as_valid_url.yml
|
250
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_client.yml
|
251
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_params.yml
|
252
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_taxonomy.yml
|
253
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_text.yml
|
254
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_unauthenticated_client.yml
|
255
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_valid_url.yml
|
256
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_value_as_text.yml
|
257
|
-
- spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_value_as_valid_url.yml
|
258
|
-
- spec/fixtures/aylien_text_api/client/classify_with_invalid_client.yml
|
259
|
-
- spec/fixtures/aylien_text_api/client/classify_with_invalid_params.yml
|
260
|
-
- spec/fixtures/aylien_text_api/client/classify_with_text.yml
|
261
|
-
- spec/fixtures/aylien_text_api/client/classify_with_unauthenticated_client.yml
|
262
|
-
- spec/fixtures/aylien_text_api/client/classify_with_valid_url.yml
|
263
|
-
- spec/fixtures/aylien_text_api/client/classify_with_value_as_text.yml
|
264
|
-
- spec/fixtures/aylien_text_api/client/classify_with_value_as_valid_url.yml
|
265
|
-
- spec/fixtures/aylien_text_api/client/combined_with_invalid_client.yml
|
266
|
-
- spec/fixtures/aylien_text_api/client/combined_with_invalid_params.yml
|
267
|
-
- spec/fixtures/aylien_text_api/client/combined_with_text.yml
|
268
|
-
- spec/fixtures/aylien_text_api/client/combined_with_unauthenticated_client.yml
|
269
|
-
- spec/fixtures/aylien_text_api/client/combined_with_valid_url.yml
|
270
|
-
- spec/fixtures/aylien_text_api/client/combined_with_value_as_text.yml
|
271
|
-
- spec/fixtures/aylien_text_api/client/combined_with_value_as_valid_url.yml
|
272
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_invalid_client.yml
|
273
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_invalid_params.yml
|
274
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_text.yml
|
275
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_unauthenticated_client.yml
|
276
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml
|
277
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml
|
278
|
-
- spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml
|
279
|
-
- spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml
|
280
|
-
- spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml
|
281
|
-
- spec/fixtures/aylien_text_api/client/entities_with_text.yml
|
282
|
-
- spec/fixtures/aylien_text_api/client/entities_with_unauthenticated_client.yml
|
283
|
-
- spec/fixtures/aylien_text_api/client/entities_with_valid_url.yml
|
284
|
-
- spec/fixtures/aylien_text_api/client/entities_with_value_as_text.yml
|
285
|
-
- spec/fixtures/aylien_text_api/client/entities_with_value_as_valid_url.yml
|
286
|
-
- spec/fixtures/aylien_text_api/client/extract_with_invalid_client.yml
|
287
|
-
- spec/fixtures/aylien_text_api/client/extract_with_invalid_params.yml
|
288
|
-
- spec/fixtures/aylien_text_api/client/extract_with_unauthenticated_client.yml
|
289
|
-
- spec/fixtures/aylien_text_api/client/extract_with_valid_url.yml
|
290
|
-
- spec/fixtures/aylien_text_api/client/extract_with_value_as_text.yml
|
291
|
-
- spec/fixtures/aylien_text_api/client/extract_with_value_as_valid_url.yml
|
292
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_invalid_client.yml
|
293
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_invalid_params.yml
|
294
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_text.yml
|
295
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_unauthenticated_client.yml
|
296
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_valid_url.yml
|
297
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_value_as_text.yml
|
298
|
-
- spec/fixtures/aylien_text_api/client/hashtags_with_value_as_valid_url.yml
|
299
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_invalid_client.yml
|
300
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_invalid_params.yml
|
301
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_unauthenticated_client.yml
|
302
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_valid_url.yml
|
303
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_value_as_text.yml
|
304
|
-
- spec/fixtures/aylien_text_api/client/image_tags_with_value_as_valid_url.yml
|
305
|
-
- spec/fixtures/aylien_text_api/client/language_with_invalid_client.yml
|
306
|
-
- spec/fixtures/aylien_text_api/client/language_with_invalid_params.yml
|
307
|
-
- spec/fixtures/aylien_text_api/client/language_with_unauthenticated_client.yml
|
308
|
-
- spec/fixtures/aylien_text_api/client/language_with_valid_text.yml
|
309
|
-
- spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
|
310
|
-
- spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
|
311
|
-
- spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
|
312
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
|
313
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
|
314
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
|
315
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
|
316
|
-
- spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
|
317
|
-
- spec/fixtures/aylien_text_api/client/rate_limits.yml
|
318
|
-
- spec/fixtures/aylien_text_api/client/rate_limits_with_invalid_client.yml
|
319
|
-
- spec/fixtures/aylien_text_api/client/rate_limits_with_unauthenticated_client.yml
|
320
|
-
- spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
|
321
|
-
- spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
|
322
|
-
- spec/fixtures/aylien_text_api/client/related_with_phrase.yml
|
323
|
-
- spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml
|
324
|
-
- spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml
|
325
|
-
- spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml
|
326
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml
|
327
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml
|
328
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_text.yml
|
329
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_unauthenticated_client.yml
|
330
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_valid_url.yml
|
331
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_value_as_text.yml
|
332
|
-
- spec/fixtures/aylien_text_api/client/sentiment_with_value_as_valid_url.yml
|
333
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_invalid_client.yml
|
334
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_invalid_params.yml
|
335
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_title_and_text.yml
|
336
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_unauthenticated_client.yml
|
337
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_valid_url.yml
|
338
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
|
339
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
|
340
|
-
- spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
|
341
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
|
342
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
|
343
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
|
344
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
|
345
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
|
346
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
|
347
|
-
- spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
|
348
|
-
- spec/lib/aylien_text_api/absa.rb
|
349
|
-
- spec/lib/aylien_text_api/classify.rb
|
350
|
-
- spec/lib/aylien_text_api/classify_by_taxonomy.rb
|
351
|
-
- spec/lib/aylien_text_api/client_spec.rb
|
352
|
-
- spec/lib/aylien_text_api/combined.rb
|
353
|
-
- spec/lib/aylien_text_api/concepts.rb
|
354
|
-
- spec/lib/aylien_text_api/entities.rb
|
355
|
-
- spec/lib/aylien_text_api/extract.rb
|
356
|
-
- spec/lib/aylien_text_api/hashtags.rb
|
357
|
-
- spec/lib/aylien_text_api/image_tags.rb
|
358
|
-
- spec/lib/aylien_text_api/language.rb
|
359
|
-
- spec/lib/aylien_text_api/microformats.rb
|
360
|
-
- spec/lib/aylien_text_api/rate_limits.rb
|
361
|
-
- spec/lib/aylien_text_api/related.rb
|
362
|
-
- spec/lib/aylien_text_api/sentiment.rb
|
363
|
-
- spec/lib/aylien_text_api/summarize.rb
|
364
|
-
- spec/lib/aylien_text_api/unsupervised_classify.rb
|
365
|
-
- spec/spec_helper.rb
|
227
|
+
test_files: []
|