marketplace_opportunity_scraper 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/{.circleci → .github}/setup-rubygems.sh +4 -1
  3. data/.github/workflows/build.yml +25 -0
  4. data/.github/workflows/publish.yml +23 -0
  5. data/.ruby-version +1 -1
  6. data/.standard.yml +2 -0
  7. data/Gemfile +1 -1
  8. data/Gemfile.lock +50 -44
  9. data/README.md +5 -3
  10. data/Rakefile +4 -6
  11. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_the_correct_opportunity_data.yml +689 -458
  12. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/returns_all_open_opportunities.yml +688 -457
  13. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_status_is_specified/returns_the_correct_opportunities.yml +1716 -1716
  14. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/gets_data_that_is_not_on_the_homepage.yml +1235 -0
  15. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/returns_the_correct_opportunities.yml +271 -810
  16. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_been_awarded/1_4_1_1.yml +16 -16
  17. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_not_been_awarded/1_4_2_1.yml +16 -16
  18. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_is_still_open/1_4_3_1.yml +16 -16
  19. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_find/gets_the_correct_opportunity_data.yml +17 -17
  20. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_has_been_awarded/1_3_4_1.yml +16 -16
  21. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_awaiting/1_3_2_1.yml +17 -17
  22. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_cancelled/1_3_3_1.yml +16 -16
  23. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_still_open/1_3_1_1.yml +17 -17
  24. data/lib/marketplace_opportunity_scraper.rb +4 -4
  25. data/lib/marketplace_opportunity_scraper/opportunity.rb +25 -25
  26. data/lib/marketplace_opportunity_scraper/utils.rb +6 -6
  27. data/lib/marketplace_opportunity_scraper/version.rb +1 -1
  28. data/marketplace_opportunity_scraper.gemspec +21 -21
  29. metadata +13 -13
  30. data/.circleci/config.yml +0 -70
  31. data/.rubocop.yml +0 -8
  32. data/.rubocop_todo.yml +0 -52
  33. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_data_that_is_not_on_the_homepage.yml +0 -2082
@@ -12,13 +12,13 @@ http_interactions:
12
12
  Accept:
13
13
  - "*/*"
14
14
  User-Agent:
15
- - Mechanize/2.7.6 Ruby/2.6.0p0 (http://github.com/sparklemotion/mechanize/)
15
+ - Mechanize/2.7.6 Ruby/2.7.1p83 (http://github.com/sparklemotion/mechanize/)
16
16
  Accept-Charset:
17
17
  - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
18
  Accept-Language:
19
19
  - en-us,en;q=0.5
20
20
  Cookie:
21
- - dm_cookie_probe=yum; dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.ENEQ_Q.629stfOMpetTyx8VgIuW9Sqylt0
21
+ - dm_cookie_probe=yum; dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.Xun8AQ.m-4xfB09lM0bt41xIRtnBuwwVYg
22
22
  Host:
23
23
  - www.digitalmarketplace.service.gov.uk
24
24
  Connection:
@@ -33,48 +33,48 @@ http_interactions:
33
33
  Content-Type:
34
34
  - text/html; charset=utf-8
35
35
  Content-Length:
36
- - '53386'
36
+ - '52053'
37
37
  Connection:
38
38
  - keep-alive
39
39
  Date:
40
- - Tue, 10 Dec 2019 11:20:30 GMT
40
+ - Wed, 17 Jun 2020 11:18:25 GMT
41
41
  Dm-Request-Id:
42
- - 8c1be73c86d58502
42
+ - f4bf649c6994d775
43
43
  Server:
44
44
  - nginx
45
45
  Set-Cookie:
46
- - dm_cookie_probe=yum; Expires=Wed, 09-Dec-2020 11:20:30 GMT; Max-Age=31536000.0;
46
+ - dm_cookie_probe=yum; Expires=Thu, 17-Jun-2021 11:18:25 GMT; Max-Age=31536000.0;
47
47
  Path=/
48
- - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.ENEQ_g.Ioi0hOnU3IP6UxXGKbZP6E2ueEQ;
49
- Expires=Tue, 10-Dec-2019 12:20:30 GMT; Secure; HttpOnly; Path=/
48
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.Xun8AQ.m-4xfB09lM0bt41xIRtnBuwwVYg;
49
+ Expires=Wed, 17-Jun-2020 12:18:25 GMT; Secure; HttpOnly; Path=/; SameSite=Lax
50
50
  Strict-Transport-Security:
51
51
  - max-age=31536000; includeSubdomains
52
52
  Vary:
53
53
  - Cookie
54
54
  X-B3-Spanid:
55
- - 8c1be73c86d58502
55
+ - f4bf649c6994d775
56
56
  X-B3-Traceid:
57
- - 8c1be73c86d58502
57
+ - f4bf649c6994d775
58
58
  X-Content-Type-Options:
59
59
  - nosniff
60
60
  X-Frame-Options:
61
61
  - DENY
62
62
  X-Vcap-Request-Id:
63
- - 67e89d26-fbb0-48ad-7f65-6fe0726ec0a7
63
+ - 265450dd-f322-42b2-6267-16e5c442f0bd
64
64
  X-Xss-Protection:
65
65
  - 1; mode=block
66
66
  X-Cache:
67
67
  - Miss from cloudfront
68
68
  Via:
69
- - 1.1 09332a16e52d74a9c0e1dbb5affe9e16.cloudfront.net (CloudFront)
69
+ - 1.1 174c08439d0479ee62deefc2d025760e.cloudfront.net (CloudFront)
70
70
  X-Amz-Cf-Pop:
71
- - LHR52-C1
71
+ - LHR61-C1
72
72
  X-Amz-Cf-Id:
73
- - XKPAk9z6-s0OUX-_abpL8SDmJHdYWwzNLxow0ovd-Ci74MzSSJJDWA==
73
+ - "-tG1KhTF9K5alh5IlV2DBXTcYqc_jsRICC8H4PJBwpJnJYVfTVviPA=="
74
74
  body:
75
75
  encoding: ASCII-8BIT
76
76
  string: !binary |-
77
- Cgo8IURPQ1RZUEUgaHRtbD4KPCEtLVtpZiBsdCBJRSA5XT48aHRtbCBjbGFzcz0ibHRlLWllOCIgbGFuZz0iZW4iPjwhW2VuZGlmXS0tPgo8IS0tW2lmIGd0IElFIDhdPjwhLS0+PGh0bWwgbGFuZz0iZW4iPjwhLS08IVtlbmRpZl0tLT4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPHRpdGxlPgogIERpZ2l0YWwgZGV2ZWxvcG1lbnQsIGltcHJvdmVtZW50IGFuZCBpbm5vdmF0aW9uIGZvciBSb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldyAtIERpZ2l0YWwgTWFya2V0cGxhY2UKPC90aXRsZT4KCiAgICA8IS0tW2lmIGd0IElFIDhdPjwhLS0+PGxpbmsgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9nb3Z1ay10ZW1wbGF0ZS5jc3M/MC4xOS4yIiBtZWRpYT0ic2NyZWVuIiByZWw9InN0eWxlc2hlZXQiIC8+PCEtLTwhW2VuZGlmXS0tPgogICAgPCEtLVtpZiBJRSA2XT48bGluayBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2dvdnVrLXRlbXBsYXRlLWllNi5jc3M/MC4xOS4yIiBtZWRpYT0ic2NyZWVuIiByZWw9InN0eWxlc2hlZXQiIC8+PCFbZW5kaWZdLS0+CiAgICA8IS0tW2lmIElFIDddPjxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZ292dWstdGVtcGxhdGUtaWU3LmNzcz8wLjE5LjIiIG1lZGlhPSJzY3JlZW4iIHJlbD0ic3R5bGVzaGVldCIgLz48IVtlbmRpZl0tLT4KICAgIDwhLS1baWYgSUUgOF0+PGxpbmsgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9nb3Z1ay10ZW1wbGF0ZS1pZTguY3NzPzAuMTkuMiIgbWVkaWE9InNjcmVlbiIgcmVsPSJzdHlsZXNoZWV0IiAvPjwhW2VuZGlmXS0tPgogICAgPGxpbmsgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9nb3Z1ay10ZW1wbGF0ZS1wcmludC5jc3M/MC4xOS4yIiBtZWRpYT0icHJpbnQiIHJlbD0ic3R5bGVzaGVldCIgLz4KCiAgICA8IS0tW2lmIElFIDhdPjxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZm9udHMtaWU4LmNzcz8wLjE5LjIiIG1lZGlhPSJhbGwiIHJlbD0ic3R5bGVzaGVldCIgLz48IVtlbmRpZl0tLT4KICAgIDwhLS1baWYgZ3RlIElFIDldPjwhLS0+PGxpbmsgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9mb250cy5jc3M/MC4xOS4yIiBtZWRpYT0iYWxsIiByZWw9InN0eWxlc2hlZXQiIC8+PCEtLTwhW2VuZGlmXS0tPgogICAgPCEtLVtpZiBsdCBJRSA5XT48c2NyaXB0IHNyYz0iL3N0YXRpYy9qYXZhc2NyaXB0cy9pZS5qcz8wLjE5LjIiPjwvc2NyaXB0PjwhW2VuZGlmXS0tPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZmF2aWNvbi5pY28/MC4xOS4yIiB0eXBlPSJpbWFnZS94LWljb24iIC8+CiAgICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZ292LnVrX2xvZ290eXBlX2Nyb3duLnN2Zz8wLjE5LjIiIGNvbG9yPSIjMGIwYzBjIj4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgc2l6ZXM9IjE1MngxNTIiIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTUyeDE1Mi5wbmc/MC4xOS4yIj4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgc2l6ZXM9IjEyMHgxMjAiIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTIweDEyMC5wbmc/MC4xOS4yIj4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgc2l6ZXM9Ijc2eDc2IiBocmVmPSIvc3RhdGljL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTc2eDc2LnBuZz8wLjE5LjIiPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBocmVmPSIvc3RhdGljL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTYweDYwLnBuZz8wLjE5LjIiPgoKICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Ii9zdGF0aWMvaW1hZ2VzL29wZW5ncmFwaC1pbWFnZS5wbmc/MC4xOS4yIj4KCiAgICAKICAKCgoKCgoKCiAgPG1ldGEgbmFtZT0iZ2FfY3VzdG9tRGltZW5zaW9uIiBkYXRhLWlkPSIxMiIgZGF0YS12YWx1ZT0iVXNlciByZXNlYXJjaCBiYW5uZXIiPgoKCgoKCiAgPCEtLVtpZiBndCBJRSA4XT48IS0tPgogIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJzY3JlZW4iIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvYXBwbGljYXRpb24uY3NzPzBmOWJhNTIzNTYzZDUyYzMzNmQxZmUyOWU3OTBjM2U1IiAvPgo8IS0tPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUgN10+CiAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InNjcmVlbiIgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9hcHBsaWNhdGlvbi1pZTcuY3NzPzM4MzhlNzVjNmIxODU5NDhlNzM5NDdhOWJjMmU1NjEyIiAvPgo8IVtlbmRpZl0tLT4KPCEtLVtpZiBJRSA4XT4KICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0ic2NyZWVuIiBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2FwcGxpY2F0aW9uLWllOC5jc3M/YTM3M2FhMWI3MzlmNTM4NmQ3YTkwM2VkNjg2MmQ2YzgiIC8+CjwhW2VuZGlmXS0tPgogIAogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJUS0dTR1puZkhweDEtbEtPdGhJMTdBTnR3azdmejNGNFNicjc3STBwcE8wIiAvPgoKCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0iIj4KICAgIDxzY3JpcHQ+ZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lKSA/IGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBqcy1lbmFibGVkJyA6ICdqcy1lbmFibGVkJyk7PC9zY3JpcHQ+CgogICAgCgogICAgPGRpdiBpZD0ic2tpcGxpbmstY29udGFpbmVyIj4KICAgICAgPGRpdj4KICAgICAgICA8YSBocmVmPSIjY29udGVudCIgY2xhc3M9InNraXBsaW5rIj5Ta2lwIHRvIG1haW4gY29udGVudDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJnbG9iYWwtY29va2llLW1lc3NhZ2UiPgogICAgICAKICAgICAgICAKICA8cD5HT1YuVUsgdXNlcyBjb29raWVzIHRvIG1ha2UgdGhlIHNpdGUgc2ltcGxlci4gPGEgaHJlZj0iL2Nvb2tpZXMiPkZpbmQgb3V0IG1vcmUgYWJvdXQgY29va2llczwvYT48L3A+CgoKICAgICAgCiAgICA8L2Rpdj4KCiAgICAKICAgIDxoZWFkZXIgcm9sZT0iYmFubmVyIiBpZD0iZ2xvYmFsLWhlYWRlciIgY2xhc3M9IndpdGgtcHJvcG9zaXRpb24iPgogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWdsb2JhbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItbG9nbyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ayIgdGl0bGU9IkdvIHRvIHRoZSBHT1YuVUsgaG9tZXBhZ2UiIGlkPSJsb2dvIiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2dvdi51a19sb2dvdHlwZV9jcm93bl9pbnZlcnRfdHJhbnMucG5nPzAuMTkuMiIgd2lkdGg9IjM2IiBoZWlnaHQ9IjMyIiBhbHQ9IiI+IEdPVi5VSwogICAgICAgICAgICA8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAogIDxkaXYgY2xhc3M9ImhlYWRlci10aXRsZSI+CiAgICA8YSBocmVmPSIvIj5EaWdpdGFsIE1hcmtldHBsYWNlPC9hPgogICAgPHN0cm9uZyBjbGFzcz0icGhhc2UtdGFnIj5CRVRBPC9zdHJvbmc+CjwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgICAgICAKICA8ZGl2IGNsYXNzPSJoZWFkZXItcHJvcG9zaXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgPGEgaHJlZj0iI3Byb3Bvc2l0aW9uLWxpbmtzIiBjbGFzcz0ianMtaGVhZGVyLXRvZ2dsZSBtZW51Ij5NZW51PC9hPgogICAgPG5hdiBpZD0icHJvcG9zaXRpb24tbWVudSI+CiAgICAgIDx1bCBpZD0icHJvcG9zaXRpb24tbGlua3MiPgogICAgICAgIDxsaT4KICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9idXlpbmctYW5kLXNlbGxpbmctb24tdGhlLWRpZ2l0YWwtbWFya2V0cGxhY2UiPkd1aWRhbmNlPC9hPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPgogICAgICAgICAgPGEgaHJlZj0iL2hlbHAiPkhlbHA8L2E+CiAgICAgICAgPC9saT4KICAgICAgICAKCiAgICAgICAgCiAgICAgICAgICAKICAgICAgICAKCiAgICAgICAgCiAgICAgICAgPGxpPgogICAgICAgICAgPGEgaHJlZj0iL3VzZXIvbG9naW4iPkxvZyBpbjwvYT4KICAgICAgICA8L2xpPgogICAgICAgIAogICAgICA8L3VsPgogICAgPC9uYXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPC9kaXY+CiAgICA8L2hlYWRlcj4KICAgIAoKICAgIAogIAogIAogIAoKICAKICAgIDxkaXYgY2xhc3M9InVzZXItcmVzZWFyY2gtYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4KICAgIDxwPgogICAgICA8c3Ryb25nIGNsYXNzPSJiYW5uZXItaGVhZGluZyI+SGVscCB1cyBpbXByb3ZlIHRoZSBEaWdpdGFsIE1hcmtldHBsYWNlPC9zdHJvbmc+CiAgICAgIDxhIAogICAgICAgIGhyZWY9IiMiIAogICAgICAgIGNsYXNzPSJ1c2VyLXJlc2VhcmNoLWJhbm5lci1jbG9zZS1idG4iCiAgICAgICAgZGF0YS1hbmFseXRpY3M9InRyYWNrRXZlbnQiCiAgICAgICAgZGF0YS1hbmFseXRpY3MtY2F0ZWdvcnk9InVzZXItcmVzZWFyY2giCiAgICAgICAgZGF0YS1hbmFseXRpY3MtYWN0aW9uPSJDbG9zZSBiYW5uZXIiCiAgICAgID5DbG9zZTwvYT4KICAgIDwvcD4KICAgIDxwPgogICAgICA8YSAKICAgICAgICBocmVmPSIvdXNlci9ub3RpZmljYXRpb25zL3VzZXItcmVzZWFyY2giCiAgICAgICAgZGF0YS1hbmFseXRpY3M9InRyYWNrRXZlbnQiCiAgICAgICAgZGF0YS1hbmFseXRpY3MtY2F0ZWdvcnk9InVzZXItcmVzZWFyY2giCiAgICAgICAgZGF0YS1hbmFseXRpY3MtYWN0aW9uPSJWaWV3IHNpZ24gdXAgdG8gdXNlciByZXNlYXJjaCBzY3JlZW4iCiAgICAgID5TaWduIHVwIHRvIGJlIGEgcG90ZW50aWFsIHVzZXIgcmVzZWFyY2ggcGFydGljaXBhbnQ8L2E+CiAgICA8L3A+CiAgPC9kaXY+CjwvZGl2PgogIAoKCiAgICA8ZGl2IGlkPSJnbG9iYWwtaGVhZGVyLWJhciI+PC9kaXY+CgogICAgCiAgICAKICAgIAogIAogIAogICAgPGRpdiBpZD0iZ2xvYmFsLWJyZWFkY3J1bWIiIGNsYXNzPSJoZWFkZXItY29udGV4dCI+CiAgPG5hdj4KICAgIDxvbCBjbGFzcz0iZ3JvdXAiIHJvbGU9ImJyZWFkY3J1bWJzIj4KICAgICAgICA8bGk+PGEgaHJlZj0iLyI+RGlnaXRhbCBNYXJrZXRwbGFjZTwvYT48L2xpPgogICAgICAgIAogICAgICAKICAgICAgICA8bGk+PGEgaHJlZj0iL2RpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzL29wcG9ydHVuaXRpZXMiPlN1cHBsaWVyIG9wcG9ydHVuaXRpZXM8L2E+PC9saT4KICAgICAgICAKICAgICAgCiAgICA8L29sPgogIDwvbmF2Pgo8L2Rpdj4KICAKCiAgPGRpdiBpZD0id3JhcHBlciI+CiAgICA8bWFpbiBpZD0iY29udGVudCIgcm9sZT0ibWFpbiI+CiAgICAgIAogIAoKICAgICAgCgoKPGRpdiBjbGFzcz0iZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImNvbHVtbi1vbmUtd2hvbGUiPgogICAgCiAgICAgIDxkaXYgY2xhc3M9ImJhbm5lci10ZW1wb3JhcnktbWVzc2FnZS13aXRob3V0LWFjdGlvbiI+CiAgCiAgICA8aDI+CiAgICAgIFRoaXMgb3Bwb3J0dW5pdHkgd2FzIGNhbmNlbGxlZAogICAgPC9oMj4KICAKICAKICAgIDxwIGNsYXNzPSJiYW5uZXItbWVzc2FnZSI+CiAgICAgIFRoZSBidXllciBjYW5jZWxsZWQgdGhpcyBvcHBvcnR1bml0eSwgZm9yIGV4YW1wbGUgYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBoYXZlIHRoZSBidWRnZXQuIFRoZXkgbWF5IHB1Ymxpc2ggYW4gdXBkYXRlZCB2ZXJzaW9uIGxhdGVyLgogICAgPC9wPgogIAogIAogIAo8L2Rpdj4KICAgIAogIDwvZGl2Pgo8L2Rpdj4KCgo8ZGl2IGNsYXNzPSJncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iY29sdW1uLXR3by10aGlyZHMiPgogICAgPGhlYWRlciBjbGFzcz0icGFnZS1oZWFkaW5nLXNtYWxsZXIiPgogICAgICA8c3BhbiBjbGFzcz0iZ292dWstY2FwdGlvbi1sIj5Sb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldzwvc3Bhbj4KICAgICAgPGgxIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLWwiPkRpZ2l0YWwgZGV2ZWxvcG1lbnQsIGltcHJvdmVtZW50IGFuZCBpbm5vdmF0aW9uIGZvciBSb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldzwvaDE+CiAgICAgIDxzcGFuIGRhdGEtbG90PSJkaWdpdGFsLW91dGNvbWVzIj48L3NwYW4+CiAgICA8L2hlYWRlcj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iY29sdW1uLW9uZS13aG9sZSI+CiAgICAKCjxkaXYgY2xhc3M9InN0YXRpc3RpYy1jb250YWluZXIiIGlkPSJpbmNvbXBsZXRlLWFwcGxpY2F0aW9ucyI+CiAgICA8aDMgY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+SW5jb21wbGV0ZSBhcHBsaWNhdGlvbnM8L2gzPgogICAgPGRpdiBjbGFzcz0iYmlnLXN0YXRpc3RpYyI+MzI8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXRpc3RpYy1uYW1lIj5JbmNvbXBsZXRlIGFwcGxpY2F0aW9uczwvZGl2PgogICAgCiAgICAgIDxkaXYgY2xhc3M9InN0YXRpc3RpYy1kZXNjcmlwdGlvbiI+MjcgU01FLCA1IGxhcmdlPC9kaXY+CiAgICAKICA8L2Rpdj4KPGRpdiBjbGFzcz0ic3RhdGlzdGljLWNvbnRhaW5lciIgaWQ9ImNvbXBsZXRlZC1hcHBsaWNhdGlvbnMiPgogICAgPGgzIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPkNvbXBsZXRlZCBhcHBsaWNhdGlvbnM8L2gzPgogICAgPGRpdiBjbGFzcz0iYmlnLXN0YXRpc3RpYyI+MzA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXRpc3RpYy1uYW1lIj5Db21wbGV0ZWQgYXBwbGljYXRpb25zPC9kaXY+CiAgICAKICAgICAgPGRpdiBjbGFzcz0ic3RhdGlzdGljLWRlc2NyaXB0aW9uIj4yNiBTTUUsIDQgbGFyZ2U8L2Rpdj4KICAgIAogIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImdyaWQtcm93Ij4KICA8ZGl2IGNsYXNzPSJjb2x1bW4tb25lLXdob2xlIj4KICAgIAoKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgSW1wb3J0YW50IGRhdGVzCiAgICA8L2NhcHRpb24+CiAgICA8dGhlYWQgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5ncyI+CiAgICAgIDx0cj4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmctZmlyc3QiPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgbmFtZTwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZyI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSB2YWx1ZTwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+UHVibGlzaGVkPC9zcGFuPgogICAgCiAgPC90ZD4KICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+VGh1cnNkYXkgMzEgT2N0b2JlciAyMDE5PC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5EZWFkbGluZSBmb3IgYXNraW5nIHF1ZXN0aW9uczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlRodXJzZGF5IDcgTm92ZW1iZXIgMjAxOSBhdCAxMTo1OXBtIEdNVDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+Q2xvc2luZyBkYXRlIGZvciBhcHBsaWNhdGlvbnM8L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaHVyc2RheSAxNCBOb3ZlbWJlciAyMDE5IGF0IDExOjU5cG0gR01UPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+CiAgCgogICAgPGgyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0taGVhZGluZyIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtMSI+CiAgICAgIAogICAgICBPdmVydmlldwogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgT3ZlcnZpZXcKICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPlN1bW1hcnkgb2YgdGhlIHdvcms8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIGFyZSBsb29raW5nIGZvciBhIHBhcnRuZXIgYWdlbmN5IHRvIHdvcmsgd2l0aCB1cyBvbiBjb250aW51aW5nIHRvIGltcHJvdmUgdGhlIEtldyYjMzk7cyBkaWdpdGFsIGVzdGF0ZSwgaW5jbHVkaW5nIHRoZSBjb250aW51b3VzIGltcHJvdmVtZW50IG9mIGtldy5vcmcsIHRoZSB1cGdyYWRlIG9mIG91ciBlLWNvbW1lcmNlIGFuZCBvbmxpbmUgbGVhcm5pbmcgb2ZmZXIsIGFsb25nc2lkZSBvbi1zaXRlIGltcHJvdmVtZW50cyB0byB2aXNpdG9yIGV4cGVyaWVuY2UgdGhyb3VnaCBkaWdpdGFsIGNoYW5uZWxzLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkxhdGVzdCBzdGFydCBkYXRlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5Nb25kYXkgMTggTm92ZW1iZXIgMjAxOTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkV4cGVjdGVkIGNvbnRyYWN0IGxlbmd0aDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+MiB5ZWFyczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkxvY2F0aW9uPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkxvbmRvbjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbiB0aGUgd29yayBpcyBmb3I8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlJveWFsIEJvdGFuaWMgR2FyZGVucywgS2V3PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+QnVkZ2V0IHJhbmdlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5NYXhpbXVtIG9mIMKjODAwLDAwMCBvdmVyIHR3byB5ZWFycyAtIHRvIGNvdmVyIGEgc2lnbmlmaWNhbnQgZS1jb21tZXJjZSByZS1kZXZlbG9wbWVudCBwcm9qZWN0LCBhcyB3ZWxsIGFzIG9uZ29pbmcgaW1wcm92ZW1lbnRzIHRvIGV4aXN0aW5nIHByb3BlcnRpZXMgYXMgd2VsbCBhcyBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSAtIGV4YWN0IHNwZW5kIHRvIGJlIGFncmVlZCBpbiBzZXBhcmF0ZSBzbWFsbGVyIHN0YXRlbWVudHMgb2Ygd29yay48L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKICAgIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTIiPgogICAgICAKICAgICAgQWJvdXQgdGhlIHdvcmsKICA8L2gyPgogICAgIAogICAgCiAgICAKICAgIDx0YWJsZSBjbGFzcz0ic3VtbWFyeS1pdGVtLWJvZHkiPgogICAgPGNhcHRpb24gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+CiAgICAgIEFib3V0IHRoZSB3b3JrCiAgICA8L2NhcHRpb24+CiAgICA8dGhlYWQgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5ncyI+CiAgICAgIDx0cj4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmctZmlyc3QiPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgbmFtZTwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZyI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSB2YWx1ZTwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5XaHkgdGhlIHdvcmsgaXMgYmVpbmcgZG9uZTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+Um95YWwgQm90YW5pYyBHYXJkZW5zLCBLZXcgaXMgYSB3b3JsZCBsZWFkaW5nIHBsYW50IHNjaWVuY2UgYW5kIGNvbnNlcnZhdGlvbiBvcmdhbmlzYXRpb24uIFdlIHJ1biB0d28gYm90YW5pYyBnYXJkZW5zIC0gS2V3IEdhcmRlbnMgaW4gTG9uZG9uIGFuZCBXYWtlaHVyc3QgaW4gU3Vzc2V4LiBLZXcgR2FyZGVucyBpcyBhIFVORVNDTyBXb3JsZCBIZXJpdGFnZSBTaXRlIGFuZCBsZWFkaW5nIHZpc2l0b3IgYXR0cmFjdGlvbiwgd2VsY29taW5nIDJtIHZpc2l0b3JzIGluIDIwMTgvMTkuIFdha2VodXJzdCBpcyBLZXfigJlzIOKAmHdpbGQgYm90YW5pYyBnYXJkZW7igJkgYW5kIHdlbGNvbWVzIG92ZXIgMzAwayB2aXNpdG9ycyBwZXIgeWVhci4gPGJyPjxicj5XZSBhcmUgbG9va2luZyBmb3IgYSBwYXJ0bmVyIGFnZW5jeSB0byB3b3JrIHdpdGggdXMgb24gY29udGludWluZyB0byBpbXByb3ZlIHRoZSBLZXcmIzM5O3MgZGlnaXRhbCBlc3RhdGUsIGluY2x1ZGluZyB0aGUgY29udGludW91cyBpbXByb3ZlbWVudCBvZiBrZXcub3JnLCB0aGUgdXBncmFkZSBvZiBvdXIgZWNvbW1lcmNlIGFuZCBvbmxpbmUgbGVhcm5pbmcgb2ZmZXIsIGFsb25nc2lkZSBvbi1zaXRlIGltcHJvdmVtZW50cyB0byB2aXNpdG9yIGV4cGVyaWVuY2UgdGhyb3VnaCBkaWdpdGFsIGNoYW5uZWxzLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPlByb2JsZW0gdG8gYmUgc29sdmVkPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSB3YW50IHRvIGZ1cnRoZXIgaW1wcm92ZSBjdXN0b21lciBqb3VybmV5cyBhY3Jvc3Mgb3VyIGRpZ2l0YWwgZXN0YXRlIHRvIGhlbHAgdXMgbWVldCBvdXIgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgZ29hbHMuIEZyb20gaW1wcm92aW5nIHVwc2VsbCBvZiBtZW1iZXJzaGlwcyB0byBlbmNvdXJhZ2luZyBkb25hdGlvbnMgYW5kIGluY3JlYXNpbmcgb3VyIG9ubGluZSByZXRhaWwgY2FwYWJpbGl0aWVzLCBvdXIgb2ZmZXIgaXMgYnJvYWQgYW5kIGF0IHRpbWVzIGNvbmZ1c2luZyBmb3IgdXNlcnMuIDxicj48YnI+V2UgcmUtbGF1bmNoZWQgb3VyIG1haW4gd2Vic2l0ZSBlYXJseSBpbiAyMDE5LCBhbmQgYXJlIG5vdyBob3BpbmcgdG8gdHVybiBvdXIgYXR0ZW50aW9uIHRvIGltcHJvdmluZyBvdXIgZWNvbW1lcmNlIG9mZmVyIChyZXRhaWwsIG1lbWJlcnNoaXBzLCBkb25hdGlvbnMsIHRpY2tldHMpLCBhbG9uZyB3aXRoIGNvbnRpbnVpbmcgdG8gdGVzdCBhbmQgaW1wcm92ZSBrZXcub3JnLiA8YnI+PGJyPk91ciB3ZWJzaXRlIGlzIGJ1aWxkIG9uIERydXBhbCA4IC0gYW5kIHdlIGFyZSBvcGVuLW1pbmRlZCBhYm91dCB3aGF0IGVjb21tZXJjZSB0ZWNobm9sb2d5IHdlIHVzZSB0byBidWlsZCBvdXQgb3VyIG9mZmVyICh3ZSBjdXJyZW50bHkgdXNlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBzb2x1dGlvbnMpPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+V2hvIHRoZSB1c2VycyBhcmUgYW5kIHdoYXQgdGhleSBuZWVkIHRvIGRvPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5BcyBhIHBvdGVudGlhbCB2aXNpdG9yLCBJIG5lZWQgdG8gZmluZCBvdXQgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCYjMzk7cyB0aGVyZSwgd2hhdCYjMzk7cyBvbiBhbmQgaG93IG11Y2ggaXQgY29zdHMsIHNvIEkgY2FuIGRlY2lkZSBpZiBJIHdhbnQgdG8gdmlzaXQuPGJyPjxicj5BcyBhIGhvcnRpY3VsdHVyZSBmYW4sIEkgY2FuIGZpbmQgYW5kIHB1cmNoYXNlIGJlYXV0aWZ1bCBwcm9kdWN0cywgc28gdGhhdCBJIGNhbiBtYWtlIG15IGhvdXNlIGJlYXV0aWZ1bC48YnI+PGJyPkFzIGEgbGFzdC1taW51dGUgc2hvcHBlciwgSSBjYW4gcHVyY2hhc2UgYSBnaWZ0IG1lbWJlcnNoaXAgdm91Y2hlciBmb3IgbXkgbXVtLCBzbyB0aGF0IEkgaGF2ZSBzb21ldGhpbmcgdG8gZ2l2ZSBoZXIgb24gaGVyIGJpcnRoZGF5Ljxicj48YnI+QXMgYSBib3RhbmlzdCwgSSBjYW4gZmluZCBvdXQgYWJvdXQgcGxhbnQgcmVzZWFyY2ggaGFwcGVuaW5nIGF0IFJCRyBLZXcsIHNvIHRoYXQgSSBjYW4gaW5mb3JtIG15IG93biByZXNlYXJjaCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsICBwYXJ0bmVyc2hpcHMvY29sbGFib3JhdGlvbnMuPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+RWFybHkgbWFya2V0IGVuZ2FnZW1lbnQ8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIGhhdmUgYmVlbiB0cmFuc3BhcmVudCB3aXRoIG91ciBleGlzdGluZyBzdXBwbGllciBhYm91dCBvdXIgcm9hZG1hcCwgYW5kIHdlIHdvdWxkIGV4cGVjdCB0aGVtIHRvIHN1Ym1pdCBhIHJlc3BvbnNlIHRvIHRoZXNlIHJlcXVpcmVtZW50cy48L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5Bbnkgd29yayB0aGF04oCZcyBhbHJlYWR5IGJlZW4gZG9uZTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+V2UgcmUtbGF1bmNoZWQga2V3Lm9yZyBpbiBNYXJjaCAyMDE5LCBhbmQgaGF2ZSBjb250aW51ZWQgdG8gbWFrZSBpdGVyYXRpdmUgaW1wcm92ZW1lbnRzIG92ZXIgdGhlIHBhc3Qgc2l4IG1vbnRocy48L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5FeGlzdGluZyB0ZWFtPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5Zb3UmIzM5O2xsIGJlIHdvcmtpbmcgcHJpbWFyaWx5IHdpdGggS2V3JiMzOTtzIERpZ2l0YWwgRXhwZXJpZW5jZSB0ZWFtLCBhbmQgcHJpbWFyaWx5IHdpdGggdGhlIEhlYWQgb2YgRGlnaXRhbCBFeHBlcmllbmNlLCBTZW5pb3IgUHJvZHVjdCBNYW5hZ2VyLCBQcm9kdWN0IE1hbmFnZXIsIEp1bmlvciBQcm9kdWN0IE1hbmFnZXIsIFVJIERlc2lnbmVyLCBTZW5pb3IgQ29udGVudCBNYW5hZ2VyIGFuZCBDb250ZW50IFByb2R1Y2Vycy4gPGJyPjxicj5XaGVyZSByZWxldmFudCB5b3UmIzM5O2xsIGFsc28gd29yayB3aXRoIHN0YWtlaG9sZGVycyBpbiBvdGhlciB0ZWFtcyBhY3Jvc3MgS2V3LCBmb3IgZXhhbXBsZSBvdXIgRGlnaXRhbCBDb21tZXJjaWFsIE1hbmFnZXIgZm9yIEVDb21tZXJjZS48L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5DdXJyZW50IHBoYXNlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkxpdmU8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKICAgIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTMiPgogICAgICAKICAgICAgV29yayBzZXR1cAogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgV29yayBzZXR1cAogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+QWRkcmVzcyB3aGVyZSB0aGUgd29yayB3aWxsIHRha2UgcGxhY2U8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlJveWFsIEJvdGFuaWMgR2FyZGVucywgS2V3PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+V29ya2luZyBhcnJhbmdlbWVudHM8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIGV4cGVjdCB0byBuZWdvdGlhdGUgYSBmbGV4aWJsZSBhcnJhbmdlbWVudCB3aXRoIHRoZSBzdXBwbGllciBhbmQgYmVsaWV2ZSBpdCBpcyBpbXBvcnRhbnQgdG8gaGF2ZSByZWd1bGFyIGZhY2UtdG8tZmFjZSBtZWV0aW5ncy4gPGJyPjxicj5XaGVuIGluIHRoZSBtaWRzdCBvZiBvbmdvaW5nIHNwcmludHMsIHdlIHdvdWxkIGxpa2UgdG8gZXhwbG9yZSBjby1sb2NhdGluZyBvbiBhIHJlZ3VsYXIgYmFzaXMgKG9uY2UgYSB3ZWVrIG9yIG9uY2UgYSBmb3J0bmlnaHQpIC0gdGhpcyBjYW4gdGFrZSBwbGFjZSBlaXRoZXIgb24gc2l0ZSBhdCBLZXcgb3IgYXQgdGhlIHN1cHBsaWVyJiMzOTtzIG9mZmljZXMuPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+U2VjdXJpdHkgY2xlYXJhbmNlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5Ob25lPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgIDwvdGJvZHk+CiAgPC90YWJsZT4KICAKCiAgICA8aDIgY2xhc3M9InN1bW1hcnktaXRlbS1oZWFkaW5nIiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy00Ij4KICAgICAgCiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24KICA8L2gyPgogICAgIAogICAgCiAgICAKICAgIDx0YWJsZSBjbGFzcz0ic3VtbWFyeS1pdGVtLWJvZHkiPgogICAgPGNhcHRpb24gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+CiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24KICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnM8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk5vbmU8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKICAgIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTUiPgogICAgICAKICAgICAgU2tpbGxzIGFuZCBleHBlcmllbmNlCiAgPC9oMj4KICAgICAKICAgICAgICA8cD48cCBjbGFzcz0ic3VtbWFyeS1pdGVtLWRlc2NyaXB0aW9uIj4KICAgIEJ1eWVycyB3aWxsIHVzZSB0aGUgZXNzZW50aWFsIGFuZCBuaWNlLXRvLWhhdmUgc2tpbGxzIGFuZCBleHBlcmllbmNlIHRvIGhlbHAgdGhlbSBldmFsdWF0ZSBzdXBwbGllcnPigJkgdGVjaG5pY2FsIGNvbXBldGVuY2UuCiAgPC9wPjwvcD4KICAgICAKICAgICAKICAgIAogICAgCiAgICA8dGFibGUgY2xhc3M9InN1bW1hcnktaXRlbS1ib2R5Ij4KICAgIDxjYXB0aW9uIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPgogICAgICBTa2lsbHMgYW5kIGV4cGVyaWVuY2UKICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkVzc2VudGlhbCBza2lsbHMgYW5kIGV4cGVyaWVuY2U8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+PHVsPgogICAgCiAgICAgIDxsaT5FeHBlcmllbmNlIG9mIERydXBhbCA4IHdlYnNpdGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIGZvciBjbGllbnRzIHdpdGggYm90aCBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCBvYmplY3RpdmVzLjwvbGk+CiAgICAKICAgICAgPGxpPkV4cGVyaWVuY2Ugb2YgZGVsaXZlcmluZyBlY29tbWVyY2Ugc29sdXRpb25zIGZvciBhIG5vdC1mb3ItcHJvZml0IG9yZ2FuaXNhdGlvbiB3aXRoIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IHByb2R1Y3QgdHlwZXMgKG9ubGluZSBkb25hdGlvbnMsIG1lbWJlcnNoaXAsIGV2ZW50cyBvciBleHBlcmllbmNlIGJvb2tpbmcsIHJldGFpbCkgdXNpbmcgZGlmZmVyZW50IHRlY2huaWNhbCBzb2x1dGlvbnMuPC9saT4KICAgIAogICAgICA8bGk+RXhwZXJpZW5jZSBvZiBpbnRlZ3JhdGluZyB3ZWJzaXRlcyBhbmQgd2ViIGFwcGxpY2F0aW9ucyB3aXRoIGJ1c2luZXNzIHN5c3RlbXMgc3VjaCBhcyBDUk0sIEVtYWlsIGFuZCBQYXltZW50IEdhdGV3YXlzLjwvbGk+CiAgICAKICAgICAgPGxpPnhwZXJpZW5jZSBvZiBhIHVzZXIgcmVzZWFyY2gvZGF0YS1kcml2ZW4gYXBwcm9hY2ggdG8gZGV2ZWxvcG1lbnQsIGluY2x1ZGluZyB1c2Ugb2YgcHJvdG90eXBpbmcgYW5kIHByb29mIG9mIGNvbmNlcHRzLjwvbGk+CiAgICAKICAgICAgPGxpPkV4cGVyaWVuY2Ugb2Ygd29ya2luZyBhbG9uZ3NpZGUgYWRkaXRpb25hbCBzdXBwbGllcnMgYW5kIGluLWhvdXNlIHRlYW1zIHRvIGRlbGl2ZXIgY29tcGxleCB0ZWNobm9sb2d5IGNoYW5nZSBwcm9qZWN0cy48L2xpPgogICAgCiAgICAgIDxsaT5FeHBlcmllbmNlIG9mIGRlbGl2ZXJpbmcgdmFsdWUgZm9yIG1vbmV5IGJ5IHdvcmtpbmcgaW4gcGFydG5lcnNoaXAgd2l0aCBjbGllbnRzIHRvIHNjb3BlIGFuZCBwcmlvcml0aXNlIGFnYWluc3QgYnVzaW5lc3MvdXNlciBuZWVkcy48L2xpPgogICAgCiAgICAgIDxsaT5FeHBlcmllbmNlIG9mIHdvcmtpbmcgd2l0aCBhbiBpbi1ob3VzZSBJVCB0ZWFtIG9uIGhvc3RpbmcsIG1vbml0b3JpbmcsIHNlY3VyaXR5IGFuZCBETlMsIGluY2x1ZGluZyByZWd1bGFyIHZ1bG5lcmFiaWxpdHkgYW5kIHBlbmV0cmF0aW9uIHRlc3RzLCBhY3RpbmcgcHJvbXB0bHkgdG8gbWl0aWdhdGUgYW5kIHJlbWVkaWF0ZSBzZWN1cml0eSBpc3N1ZXMuPC9saT4KICAgIAogICAgICA8bGk+QWJsZSB0byBkZW1vbnN0cmF0ZSBwcm9hY3RpdmUgYXBwcm9hY2ggdG8gbWFpbnRlbmFuY2UgYW5kIG1hbmFnaW5nIENNUyB1cGRhdGVzIChlLmcuIHJlZ3VsYXIgRHJ1cGFsIHNlY3VyaXR5IHVwZGF0ZXMpPC9saT4KICAgIAogIDwvdWw+CiAgPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+TmljZS10by1oYXZlIHNraWxscyBhbmQgZXhwZXJpZW5jZTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj48dWw+CiAgICAKICAgICAgPGxpPkV4cGVyaWVuY2Ugb2YgZGVsaXZlcmluZyBhbiBpbnRlZ3JhdGVkIGVjb21tZXJjZSBvZmZlciAoNSBwb2ludHMpPC9saT4KICAgIAogICAgICA8bGk+RXhwZXJpZW5jZSBvZiB3b3JraW5nIHdpdGggYSBtdWx0aXNpdGUgdmlzaXRvciBhdHRyYWN0aW9uIHdpdGggYSByZXRhaWwgYW5kIG1lbWJlcnNoaXAgb2ZmZXIgYWxvbmdzaWRlIGZ1bmRyYWlzaW5nIGFtYml0aW9ucyAoNSBwb2ludHMpPC9saT4KICAgIAogIDwvdWw+CiAgPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgIDwvdGJvZHk+CiAgPC90YWJsZT4KICAKCiAgICA8aDIgY2xhc3M9InN1bW1hcnktaXRlbS1oZWFkaW5nIiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy02Ij4KICAgICAgCiAgICAgIEhvdyBzdXBwbGllcnMgd2lsbCBiZSBldmFsdWF0ZWQKICA8L2gyPgogICAgIAogICAgICAgIDxwPkFsbCBzdXBwbGllcnMgd2lsbCBiZSBhc2tlZCB0byBwcm92aWRlIGEgd3JpdHRlbiBwcm9wb3NhbC48L3A+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgSG93IHN1cHBsaWVycyB3aWxsIGJlIGV2YWx1YXRlZAogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+SG93IG1hbnkgc3VwcGxpZXJzIHRvIGV2YWx1YXRlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj42PC9zcGFuPgogICAgCiAgPC90ZD4KICAKICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+UHJvcG9zYWwgY3JpdGVyaWE8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+PHVsPgogICAgCiAgICAgIDxsaT5Qcm92aWRlIGFuIG92ZXJ2aWV3IG9mIHNvbWUgb2YgdGhlIGltcHJvdmVtZW50IG9wcG9ydHVuaXRpZXMgeW91IGNhbiBpZGVudGlmeSB0byBpbmNyZWFzZSBvbmxpbmUgcmV2ZW51ZXMgZm9yIFJCRyBLZXcsIGFuZCBzb21lIG9mIHRoZSBsaWtlbHkgZGVwZW5kZW5jaWVzL2NoYWxsZW5nZXMgb2YgdGhlIHByb2plY3QuICg1MCBwb2ludHMpPC9saT4KICAgIAogICAgICA8bGk+UHJvdmlkZSBhbiBvdXRsaW5lIG9mIGFuIGVuZC10by1lbmQgZWNvbW1lcmNlIHByb2plY3QgeW91IGhhdmUgZGVsaXZlcmVkIGluY2x1ZGluZyBkZXRhaWxzIG9mIHRoZSBtZXRob2RvbG9neSwgdGVjaG5pY2FsIHNvbHV0aW9uLCBpbnRlZ3JhdGlvbnMsIGNoYWxsZW5nZXMgeW91IGZhY2VkLCBhbiBvdXRsaW5lIG9mIGJlbmVmaXQgcmVhbGlzYXRpb24uICg1MCBwb2ludHMpPC9saT4KICAgIAogICAgICA8bGk+RGV0YWlscyBvZiB5b3VyIGFwcHJvYWNoIHRvIGlkZW50aWZ5aW5nIGEgdGVjaG5pY2FsIHNvbHV0aW9uIChvciBzdWl0ZSkgdG8gZGVsaXZlciBvdXIgZWNvbW1lcmNlIGFtYml0aW9ucyBhbmQgaW5mb3JtYXRpb24geW91IHdvdWxkIG5lZWQgdG8gaW5mb3JtL3ZhbGlkYXRlIGFuIG9wdGlvbnMgYXBwcmFpc2FsIGFuZCByZWNvbW1lbmRhdGlvbiAoMjApPC9saT4KICAgIAogICAgICA8bGk+RGV0YWlsIHlvdXIgYXBwcm9hY2ggdG8gb25nb2luZyBtYWludGVuYW5jZS9zdXBwb3J0IG9mIHdlYnNpdGVzLCBvdXRsaW5pbmcgaG91cnMgb2Ygc2VydmljZSBhbmQgaG93IHByaW9yaXR5IGlzc3VlcyBhcmUgZGVhbHQgd2l0aCwgaW5jbHVkaW5nIGFuIGV4YW1wbGUgd29yayB3aXRoIGFuIGV4aXN0aW5nIGNsaWVudC4gKDIwIHBvaW50cyk8L2xpPgogICAgCiAgICAgIDxsaT5EZXRhaWwgeW91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkaWZmZXJlbnQgYW5kIGNvbXBldGluZyBwcmlvcml0aWVzIChib3RoIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsKSB3ZSBmYWNlIGFzIGFuIG9yZ2FuaXNhdGlvbiAoMjAgcG9pbnRzKTwvbGk+CiAgICAKICAgICAgPGxpPlByb3ZpZGUgYW4gZXhhbXBsZSBvZiBob3cgeW91IGhhdmUgd29ya2VkIHdpdGggYSBjbGllbnQgZ29pbmcgdGhyb3VnaCBhIGxhcmdlLXNjYWxlIGRpZ2l0YWwgdHJhbnNmb3JtYXRpb24gdG8gZGV0ZXJtaW5lIGFuZCBkZWxpdmVyIGFnYWluc3QgdGhlaXIgZGlnaXRhbCByb2FkbWFwICgyMCBwb2ludHMpPC9saT4KICAgIAogICAgICA8bGk+UHJvdmlkZSBpbmZvcm1hdGlvbiBvbiB3aGF0IG1ha2VzIGEgc3VjY2Vzc2Z1bCBhZ2VuY3kvY2xpZW50IHBhcnRuZXJzaGlwLCBhbmQgYW4gZXhhbXBsZSBvZiB3aGVyZSB5b3UgaGF2ZSBhY2hpZXZlZCB0aGlzIChwbGVhc2UgaW5jbHVkZSB0aGlzIGNsaWVudCBhcyBvbmUgb2YgeW91ciByZWZlcmVuY2VzKS4gKDIwIHBvaW50cyk8L2xpPgogICAgCiAgPC91bD4KICA8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5DdWx0dXJhbCBmaXQgY3JpdGVyaWE8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+PHVsPgogICAgCiAgICAgIDxsaT5EZW1vbnN0cmF0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkaWZmZXJlbnQgYW5kIGNvbXBldGluZyBwcmlvcml0aWVzIChib3RoIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsKSBmYWNlZCBieSBjb21wbGV4IG5vbi1wcm9maXQgb3JnYW5pc2F0aW9ucyAoMjAgcG9pbnRzKTwvbGk+CiAgICAKICAgICAgPGxpPkRlbW9uc3RyYXRlIGFuIGV2aWRlbmNlLWRyaXZlbiBhcHByb2FjaCB3aXRoIGFuIGV4YW1wbGUgb2Ygd2hlcmUgeW91IGhhdmUgdXNlZCBhbmFseXRpY3Mgb3IgdXNlciByZXNlYXJjaCB0byBpbmZsdWVuY2Ugb3V0Y29tZXMgKDIwIHBvaW50cyk8L2xpPgogICAgCiAgICAgIDxsaT5Qcm92aWRlIGFuIGV4YW1wbGUgb2Ygd2hlcmUgeW91IGhhdmUgd29ya2VkIHdpdGggaW4taG91c2UgZGV2ZWxvcG1lbnQgYW5kIElUIHJlc291cmNlcyB0byBkZWxpdmVyIG9uIGEgcHJvamVjdCAoMjAgcG9pbnRzKTwvbGk+CiAgICAKICAgICAgPGxpPlByb3ZpZGUgZXZpZGVuY2Ugb2Ygc3VwcG9ydGluZyBhbiBpbi1ob3VzZSBkaWdpdGFsIHRlYW0gd2l0aCBzdGFrZWhvbGRlciBlbmdhZ2VtZW50IHRvIGRlbGl2ZXIgc29sdXRpb25zIHRoYXQgbWVldCBib3RoIHVzZXIgYW5kIGJ1c2luZXNzIG5lZWRzICgxNSBwb2ludHM8L2xpPgogICAgCiAgPC91bD4KICA8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5QYXltZW50IGFwcHJvYWNoPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkNhcHBlZCB0aW1lIGFuZCBtYXRlcmlhbHM8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5BZGRpdGlvbmFsIGFzc2Vzc21lbnQgbWV0aG9kczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj48dWw+CiAgICAKICAgICAgPGxpPlJlZmVyZW5jZTwvbGk+CiAgICAKICAgICAgPGxpPlByZXNlbnRhdGlvbjwvbGk+CiAgICAKICA8L3VsPgogIDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkV2YWx1YXRpb24gd2VpZ2h0aW5nPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtdWx0aXF1ZXN0aW9uIj4KICAgICAgICAgIDxwPlRlY2huaWNhbCBjb21wZXRlbmNlPC9wPgogICAgICAgICAgPGRpdj42MCU8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGlxdWVzdGlvbiI+CiAgICAgICAgICA8cD5DdWx0dXJhbCBmaXQ8L3A+CiAgICAgICAgICA8ZGl2PjIwJTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAKICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtdWx0aXF1ZXN0aW9uIj4KICAgICAgICAgIDxwPlByaWNlPC9wPgogICAgICAgICAgPGRpdj4yMCU8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgIDwvdGJvZHk+CiAgPC90YWJsZT4KICAKCiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iY29sdW1uLW9uZS13aG9sZSI+CiAgICAKCgoKPGgyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0taGVhZGluZyIgaWQ9ImNsYXJpZmljYXRpb24tcXVlc3Rpb25zIj4KICAgICAgCiAgICAgIFF1ZXN0aW9ucyBhc2tlZCBieSBzdXBwbGllcnMKICA8L2gyPgoKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgUXVlc3Rpb25zIGFza2VkIGJ5IHN1cHBsaWVycwogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+U3VwcGxpZXIgcXVlc3Rpb248L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5CdXllciBhbnN3ZXI8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xLjwvc3Bhbj4KICAgICAgSW4gdGhlIGVzc2VudGlhbCBza2lsbHMgaXQgbGlzdCB0aGF0ICYjMzQ7IEV4cGVyaWVuY2Ugb2YgRHJ1cGFsIDggd2Vic2l0ZSBkZXZlbG9wbWVudCYjMzQ7IGlzIHJlcXVpcmVkIGJ1dCBpbiB0aGUgZGVzY3JpcHRpb24gYWxzbyBzYXlzIHRoYXQgeW91IGFyZSBvcGVuIHRvIG90aGVyIEVjb21tZXJjZSB0ZWNobm9sb2dpZXMuIElmIGEgc3VwcGxpZXIgd291bGQgbGlrZSB0byBpbXBsZW1lbnQgYSBkaWZmZXJlbnQgQ01TL2Vjb21tZXJjZSBzb2x1dGlvbiB3b3VsZCB0aGV5IHN0aWxsIG5lZWQgRHJ1cGFsIDggZXhwZXJpZW5jZT88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5EcnVwYWwgOCBpcyB0aGUgQ01TIGZvciBrZXcub3JnLCB3aGljaCB3YXMgcmVidWlsdCBhbmQgbGF1bmNoZWQgaW4gTWFyY2ggMjAxOS4gV2UgYXJlIGN1cnJlbnRseSBub3QgbG9va2luZyB0byBjaGFuZ2UgdGhhdCBDTVMgdW5kZXIgdGhpcyB0ZW5kZXIuIDxicj48YnI+QXMgcGFydCBvZiBhbnkgZnV0dXJlIGRldmVsb3BtZW50IGFyb3VuZCBvdXIgZS1jb21tZXJjZSBvZmZlciwgd2Ugd291bGQgYXNzZXNzIHBvdGVudGlhbCBwbGF0Zm9ybXMgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLiA8YnI+PGJyPkhvd2V2ZXIsIGdpdmVuIHdlIGN1cnJlbnRseSB1c2UgRHJ1cGFsIDgsIHdlIGRvIHJlcXVpcmUgZXhwZXJ0aXNlIGluIHN1cHBvcnRpbmcgYW5kIGZ1cnRoZXIgZGV2ZWxvcGluZyBvdXIgRHJ1cGFsIDggQ01TIGFzIGEgcHJpb3JpdHkgdW5kZXIgdGhpcyB0ZW5kZXI8L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4yLjwvc3Bhbj4KICAgICAgQ291bGQgeW91IHBsZWFzZSBjb25maXJtIHdoZXRoZXIgZGVtb25zdHJhdGluZyBleHBlcmllbmNlIGJ1aWxkaW5nIGNvbXBsZXggZS1jb21tZXJjZSBzeXN0ZW1zIHVzaW5nIGEgcmFuZ2Ugb2YgUEhQIHBsYXRmb3JtcyB0aGF0IGFyZSBOT1QgRHJ1cGFsIDggd291bGQgYmUgYW4gYWNjZXB0YWJsZSByZXNwb25zZT88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5ZZXMsIHdlIHdpbGwgY29uc2lkZXIgdGhlIHVzZSBvZiBvdGhlciBwbGF0Zm9ybXMgYW5kIHRlY2hub2xvZ2llcyBmb3IgYW55IGZ1dHVyZSBkZXZlbG9wbWVudCBhcm91bmQgb3VyIGUtY29tbWVyY2Ugb2ZmZXIuIDxicj48YnI+SG93ZXZlciwgRHJ1cGFsIDggaXMgdGhlIENNUyBmb3Iga2V3Lm9yZywgd2hpY2ggd2UgcmVxdWlyZSBleHBlcnRpc2UgaW4gc3VwcG9ydGluZyBhbmQgZnVydGhlciBkZXZlbG9wbWVudCBvZiBhcyBwYXJ0IG9mIHRoaXMgdGVuZGVyLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjMuPC9zcGFuPgogICAgICBXZSBkb24mIzM5O3QgaGF2ZSBzcGVjaWZpYyBEcnVwYWwgOCBleHBlcmllbmNlIGJ1dCB3b3JrIHdpdGggb3RoZXIgbGFyZ2Utc2NhbGUgUEhQLWJhc2VkIGNvbnRlbnQgbWFuYWdlbWVudCBzeXN0ZW1zLiA8YnI+PGJyPk91ciB0ZWFtIHdvdWxkIGJlIG1vcmUgdGhhbiBjYXBhYmxlIG9mIHByb3ZpZGluZyBzdXBwb3J0IGFuZCBtYWludGFpbmluZyB0aGUgZXhpc3Rpbmcgc3lzdGVtLiA8YnI+PGJyPkRvZXMgdGhpcyBleGNsdWRlIHVzIGZyb20gdGhlIHByb3Bvc2FsIHN0YWdlPyBXZSBhcmUgY2FwYWJsZSBvZiBkZW1vbnN0cmF0aW5nIGV4cGVyaWVuY2UgaW4gYWxsIG90aGVyIGFyZWFzPC9zcGFuPgogICAgCiAgPC90ZD4KICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+V2Ugd291bGQgcGxhY2UgcHJlZmVyZW5jZSBvbiBzdXBwbGllciB3aG8gaGF2ZSBleHBlcmllbmNlIG9mIHN1cHBvcnRpbmcgYW5kIGRldmVsb3BpbmcgZm9yIERydXBhbCA4LiA8YnI+PGJyPlRoZSBzdXBwbGllciBtdXN0IGJlIGFibGUgdG8gZGV2ZWxvcCBmb3IgRHJ1cGFsIDgsIG5vdCBqdXN0IHN1cHBvcnQgdGhlIHN5c3RlbTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjQuPC9zcGFuPgogICAgICBXaG8gaXMgdGhlIGV4aXN0aW5nIHN1cHBsaWVyPzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk91ciBjdXJyZW50IHN1cHBsaWVyIGlzIE1hbmlmZXN0bywgcGFydCBvZiB0aGUgUGFub3BseSBncm91cC48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj41Ljwvc3Bhbj4KICAgICAgSXQgc291bmRzIGxpa2UgaXTigJlzIG9ubHkgdGhlIERydXBhbCBDb21tZXJjZSBjb21wb25lbnQgdGhhdCB5b3UgYXJlIGNvbnNpZGVyaW5nIHJlcGxhY2luZywgbm90IERydXBhbCBDTVMuIENhbiB5b3UgY29uZmlybSB0aGlzIGlzIGNvcnJlY3Qgb3IgaWYgeW91IGFyZSBvcGVuIHRvIGEgbmV3IENNUz88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5PdmVyIHRoZSBjb21pbmcgNi0yNCBtb250aHMsIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGUtY29tbWVyY2UgcHJvamVjdCB0aGF0IHdpbGwgZWl0aGVyIGJlIGEgcGFydCBvZiBvdXIgRHJ1cGFsIDggZGV2ZWxvcG1lbnQgb3IgaG91c2VkIG9uIHRoZWlyIG93biBwbGF0Zm9ybS48YnI+PGJyPldlIGFyZSBub3QgY29tbWl0dGVkIHRvIGNyZWF0aW5nIGFueSBuZXcgcGxhdGZvcm0ocykgdW5sZXNzIGl04oCZcyBkZWVtZWQgYXBwcm9wcmlhdGUgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLCBlbnN1cmluZyB0aGF0IHRoZXkgbWVldCB0aGUgcmVxdWlyZW1lbnRzIGZvciBkZXZlbG9waW5nIHRoZSBzY29wZWQgcGxhdGZvcm0ocykuPGJyPjxicj5XZSBhcmUgb3BlbiB0byBkaXNjdXNzaW5nIHBsYXRmb3JtcyBmb3IgYW55IGZ1dHVyZSBkZXZlbG9wbWVudCBvZiBvdXIgZS1jb21tZXJjZSBvZmZlciBhbmQgaXQgbWF5IGJlIHRoYXQgd2UgcHVibGlzaCBhIHNlcGFyYXRlIHRlbmRlciBmb3Igd29yayB0byBjcmVhdGUgYSBuZXcgZS1jb21tZXJjZSBwbGF0Zm9ybShzKSBhdCBhIGxhdGVyIGRhdGUgdG8gYXBwb2ludCBhIHNlcGFyYXRlIHN1cHBsaWVyIHRvIHRoaXMgY29udHJhY3QuPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+Ni48L3NwYW4+CiAgICAgIFRoZSBkZWFkbGluZSBmb3IgYXNraW5nIHF1ZXN0aW9ucyBpcyA3IE5vdmVtYmVyLCBidXQgaW4gdGhlIFEmYW1wO0Egc2Vzc2lvbiBkZXRhaWxzIHlvdSBzYXkgJiMzNDtXZSB3aWxsIHBvc3QgcmVzcG9uc2VzIHRvIGFsbCBxdWVzdGlvbnMgcmVjZWl2ZWQgb25saW5lIGJ5IHRoZSAxM3RoIE5vdmVtYmVyJiMzNDsuIDxicj48YnI+V2UgY2FuIG9ubHkgYXNzdW1lIHRoaXMgaXMgYW4gZXJyb3IsIGFzIHRoZSBjbG9zaW5nIGRhdGUgZm9yIGFwcGxpY2F0aW9ucyBpcyB0aGUgMTR0aCBOb3ZlbWJlcjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlRoZSBEaWdpdGFsIE1hcmtldHBsYWNlIHByZXNjcmliZWQgdGltZWxpbmVzIHJlcXVpcmUgYWxsIHJlc3BvbnNlcyB0byBiZSBwdWJsaXNoZWQgYnkgMTN0aCBvZiBOb3ZlbWJlciBhdCB0aGUgbGF0ZXN0Ljxicj48YnI+V2Ugd2lsbCBvZiBjb3Vyc2UgZW5kZWF2b3VyIHRvIHB1Ymxpc2ggYW5zd2VycyB0byBhbGwgcXVlc3Rpb25zIHJlY2VpdmVkIGJ5IHRoZSBkZWFkbGluZSBhcyBzb29uIGFzIHBvc3NpYmxlPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+Ny48L3NwYW4+CiAgICAgIFBsZWFzZSBjb25maXJtIHdoZXRoZXIgeW91IHdvdWxkIGNvbnNpZGVyIGEgc3VwcGxpZXIgaWYgdGhleSBoYXZlIGJvdGggZWNvbW1lcmNlIGV4cGVyaWVuY2UgYW5kIG5vdC1mb3ItcHJvZml0IGV4cGVyaWVuY2UgYnV0IGhhdmVuJiMzOTt0IHByZXZpb3VzbHkgZG9uZSBhIHByb2plY3QgdGhhdCBjb21iaW5lcyBib3RoIGVjb21tZXJjZSBhbmQgbm90LWZvci1wcm9maXQgaW4gdGhlIHNhbWUgcHJvamVjdCBvciBmb3IgdGhlIHNhbWUgY2xpZW50PyBPciB3b3VsZCB5b3UgcnVsZSBvdXQgYSBzdXBwbGllciBiYXNlZCBvbiB0aGF0Pzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlllcywgd2UgYXJlIG9wZW4gdG8gd29ya2luZyB3aXRoIGEgc3VwcGxpZXIgd2l0aCBleHBlcmllbmNlIGluIGVhY2ggYXJlYSwgYnV0IHRoYXQgZG9lc27igJl0IG5lY2Vzc2FyaWx5IGhhdmUgYSBzaW5nbGUgcHJvamVjdCBvciBzaW5nbGUgY2xpZW50IHRvIHByb3ZpZGUgZXZpZGVuY2Ugb2Ygb3IgcmVmZXJlbmNlcyBmb3IuPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+OC48L3NwYW4+CiAgICAgIERvIHlvdSBoYXZlIGFueSBkb2N1bWVudGF0aW9uIGFyb3VuZCBleGlzdGluZyBrZXkgdXNlciBqb3VybmV5cyBhbmQvb3IgaWRlYWwgc3RhdGUgam91cm5leXMgYXMgb2YgeWV0Pzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkZvciB0aGlzIHRlbmRlciwgd2Ugd291bGQgZXhwZWN0IHRvIHdvcmsgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyIHRvIG1hcCBvdXIga2V5IHVzZXIgam91cm5leXMgZm9yIHRoZSByZWxldmFudCBzdGF0ZW1lbnRzIG9mIHdvcmsgdGhhdCB3aWxsIGJlIGNhcnJpZWQgb3V0Ljwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjkuPC9zcGFuPgogICAgICBEbyB5b3UgYWxyZWFkeSBoYXZlIG1hcHBlZCBvdXQgdXNlciBwZXJzb25hcyBhbmQvb3IgYW55IGRldGFpbCBvbiBhdWRpZW5jZSAvIHVzZXIgc2VnbWVudGF0aW9uPzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIGFyZSBjdXJyZW50bHkgdW5kZXJnb2luZyBhIHJldmlldyBvZiBvdXIgdXNlIGFuZCBzdHJ1Y3R1cmUgb2YgYXVkaWVuY2UgcGVyc29uYXMgYW5kIHNlZ21lbnRhdGlvbi4gVGhpcyB3b3JrIGlzIGxpa2VseSB0byBiZSBjYXJyaWVkIG91dCBpbiBRMSAyMDIwLzIxLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjEwLjwvc3Bhbj4KICAgICAgUGxlYXNlIGNvdWxkIHlvdSBzaGFyZSBmdXJ0aGVyIGRldGFpbCAoZXZlbiBpZiBvbmx5IHRoZSBuYW1lIG9mKSByZSB5b3VyIGV4aXN0aW5nIHJldGFpbCBwbGF0Zm9ybXMsIENSTSBzeXN0ZW0sIGVtYWlsIHN5c3RlbSwgcGF5bWVudCB0ZWNobm9sb2d5IGFuZCBhbnkgb3RoZXIga2V5IGludGVncmF0aW9uIHBvaW50cz88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaGUgdmFyaW91cyBzeXN0ZW1zIGluIG91ciBkaWdpdGFsIGVzdGF0ZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIERydXBhbCA4IGFzIHRoZSBDTVMgZm9yIGtldy5vcmcsIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBpbiB0aGUgY29taW5nIGZpbmFuY2lhbCB5ZWFyLiA8YnI+PGJyPkJlY2F1c2Ugb2YgdGhpcywgd2Ugd291bGQgbGlrZSByZXNwb25zZXMgbm90IHRvIGZvY3VzIG9uIHRoZSBleGlzdGluZyBvciBwb3RlbnRpYWwgc3lzdGVtcywgYXMgdGhpcyB3aWxsIGJlIGFncmVlZCBiZXR3ZWVuIEtldyBhbmQgdGhlIGFwcG9pbnRlZCBzdXBwbGllcjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjExLjwvc3Bhbj4KICAgICAgWW91IG5vdGUgdGhlIGRlc2lyZSB0byBpbXByb3ZlIHVwc2VsbCBvZiBtZW1iZXJzaGlwcywgZW5jb3VyYWdlIGRvbmF0aW9ucyBhbmQgaW5jcmVhc2Ugb25saW5lIHJldGFpbCBjYXBhYmlsaXRpZXM6IGNhbiB5b3Ugc2hhcmUgYW55dGhpbmcgZnVydGhlciBhYm91dCB0aGUgd2lkZXIgb3JnYW5pc2F0aW9uYWwgZ29hbHMgYW5kIGNoYWxsZW5nZXMgYW5kIHRoZSBiYWxhbmNlIGluIHByaW9yaXR5IChpZiBhbnkpIG9mIHlvdXIgdmFyeWluZyBnb2Fscz88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaGVyZSBpcyBjdXJyZW50bHkgYSBjcm9zcy1vcmdhbmlzYXRpb24gcHJvZ3JhbW1lIHRvIGRlZmluZSB0aGUgYnVzaW5lc3MgYW5kIHVzZXIgbmVlZHMgYXJvdW5kIGltcHJvdmluZyB0aGUgZS1jb21tZXJjZSBvZmZlciAoaW5jbHVkaW5nIHJldGFpbCwgbWVtYmVyc2hpcCwgYW5kIGZ1bmRyYWlzaW5nKS4gVGhlIG91dGNvbWUgb2YgdGhpcyBwcm9ncmFtbWUgd2lsbCBwcm9kdWNlIHRoZSByb2FkbWFwIGZvciBpbXByb3ZpbmcgdGhlIG9mZmVyLCB3aGljaCB3aWxsIHRoZW4gYmUgZGV2ZWxvcGVkIGludG8gc3RhdGVtZW50cyBvZiB3b3JrIHdpdGggdGhlIGFwcG9pbnRlZCBzdXBwbGllci48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xMi48L3NwYW4+CiAgICAgIEl0IHNvdW5kcyBsaWtlIGl04oCZcyBvbmx5IHRoZSBEcnVwYWwgQ29tbWVyY2UgY29tcG9uZW50IHRoYXQgeW91IGFyZSBjb25zaWRlcmluZyByZXBsYWNpbmcsIG5vdCBEcnVwYWwgQ01TLiBDYW4geW91IGNvbmZpcm0gdGhpcyBpcyBjb3JyZWN0IG9yIGlmIHlvdSBhcmUgb3BlbiB0byBhIG5ldyBDTVM/PC9zcGFuPgogICAgCiAgPC90ZD4KICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+RHJ1cGFsIDggaXMgdGhlIENNUyBmb3Iga2V3Lm9yZywgd2hpY2ggd2FzIHJlYnVpbHQgYW5kIGxhdW5jaGVkIGluIE1hcmNoIDIwMTkuIFdlIGFyZSBjdXJyZW50bHkgbm90IGxvb2tpbmcgdG8gY2hhbmdlIHRoYXQgQ01TIHVuZGVyIHRoaXMgdGVuZGVyLiA8YnI+PGJyPkFzIHBhcnQgb2YgYW55IGZ1dHVyZSBkZXZlbG9wbWVudCBhcm91bmQgb3VyIGUtY29tbWVyY2Ugb2ZmZXIsIHdlIHdvdWxkIGFzc2VzcyBwb3RlbnRpYWwgcGxhdGZvcm1zIHdpdGggdGhlIGFwcG9pbnRlZCBzdXBwbGllci4gPGJyPjxicj5Ib3dldmVyLCBnaXZlbiB3ZSBjdXJyZW50bHkgdXNlIERydXBhbCA4LCB3ZSBkbyByZXF1aXJlIGV4cGVydGlzZSBpbiBzdXBwb3J0aW5nIGFuZCBmdXJ0aGVyIGRldmVsb3Bpbmcgb3VyIERydXBhbCA4IENNUyBhcyBhIHByaW9yaXR5IHVuZGVyIHRoaXMgdGVuZGVyPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+MTMuPC9zcGFuPgogICAgICBEbyB5b3UgaGF2ZSBhbiBleGlzdGluZyBzdGVlcmluZyBjb21taXR0ZWUgaW4gcGxhY2UgdGhhdCBpcyBpbnZlc3RlZCBpbiB5b3VyIGRpZ2l0YWwgdHJhbnNmb3JtYXRpb24gcHJvZ3JhbW1lIG9yIHdvdWxkIHRoaXMgYmUgc29tZXRoaW5nIHlvdeKAmWQgYmUgbG9va2luZyB0byBwdXQgaW4gcGxhY2UgZ29pbmcgZm9yd2FyZD88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaGVyZSBhcmUgY3VycmVudGx5IHR3byBjcm9zcy1vcmdhbmlzYXRpb24gZ3JvdXBzIHRoYXQgd2lsbCBpbnB1dCBpbnRvIHRoZSByb2FkbWFwIG9mIG91ciBkaWdpdGFsIG9mZmVyOyBvbmUgb2Ygd2hpY2ggaXMgZm9jdXNzZWQgb24gZGV2ZWxvcGluZyBvdXIgdmlzaXRvciB1c2VyIGpvdXJuZXlzIGFjcm9zcyBvdXIgZS1jb21tZXJjZSBvZmZlci48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xNC48L3NwYW4+CiAgICAgIFdoYXQgaXMgdGhlIHRpbWVsaW5lIGZvciBwcm9wb3NhbHMgb25jZSBzaXggc3VwcGxpZXJzIGhhdmUgYmVlbiBzaG9ydGxpc3RlZCBmb3IgZXZhbHVhdGlvbj88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSBpbnRlbmQgdG8gaW52aXRlIHNob3J0bGlzdGVkIHN1cHBsaWVycyB0byBwcmVzZW50IGF0IFJCRyBLZXcgb24gdGhlIGFmdGVybm9vbnMgb2YgdGhlIDI3dGggYW5kIDI4dGggTm92ZW1iZXIsIGFuZCB0byBoYXZlIGEgQ29udHJhY3QgaW4gcGxhY2UgYnkgbWlkLURlY2VtYmVyLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjE1Ljwvc3Bhbj4KICAgICAgV2hhdCBpbnRlcm5hbCBkZXZlbG9wbWVudCAmYW1wOyBkZXNpZ24gcmVzb3VyY2VzIHdvdWxkIHdlIGJlIHdvcmtpbmcgd2l0aD88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSBjdXJyZW50bHkgaGF2ZSBhbiBpbnRlcm5hbCBVSSBkZXNpZ25lciwgd2l0aGluIEtld+KAmXMgRGlnaXRhbCBFeHBlcmllbmNlIHRlYW0sIHdobyB3b3VsZCBkZXZlbG9wIHRoZSBmcm9udC1lbmQgZGVzaWducyBmb3IgYWxsLCBvciBtb3N0LCBvZiBvdXIgb25saW5lIHByZXNlbmNlLjxicj48YnI+SW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIGRlc2lnbiByZXNvdXJjZSwgdGhlIGFwcG9pbnRlZCBzdXBwbGllciB3aWxsIGJlIHdvcmtpbmcgcHJpbWFyaWx5IHdpdGggS2V3JiMzOTtzIERpZ2l0YWwgRXhwZXJpZW5jZSB0ZWFtLCBhbmQgcHJpbWFyaWx5IHdpdGggdGhlIEhlYWQgb2YgRGlnaXRhbCBFeHBlcmllbmNlLCBTZW5pb3IgUHJvZHVjdCBNYW5hZ2VyLCBQcm9kdWN0IE1hbmFnZXIsIEp1bmlvciBQcm9kdWN0IE1hbmFnZXIsIFVJIERlc2lnbmVyLCBTZW5pb3IgQ29udGVudCBNYW5hZ2VyIGFuZCBDb250ZW50IFByb2R1Y2Vycy4gPGJyPjxicj5XaGVyZSByZWxldmFudCB5b3UmIzM5O2xsIGFsc28gd29yayB3aXRoIHN0YWtlaG9sZGVycyBpbiBvdGhlciB0ZWFtcyBhY3Jvc3MgS2V3LCBmb3IgZXhhbXBsZSBvdXIgRGlnaXRhbCBDb21tZXJjaWFsIE1hbmFnZXIgZm9yIEVDb21tZXJjZS48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xNi48L3NwYW4+CiAgICAgIEFyZSB5b3UgbG9va2luZyBmb3IgcmVzb3VyY2VzIHRvIGJlIHBsdWdnZWQgaW50byB5b3VyIHRlYW0gYW5kIG1hbmFnZWQgYnkgeW91ciBwcm9qZWN0IG1hbmFnZXIsIG9yIGFyZSB5b3UgbG9va2luZyBmb3IgYSBzZWxmLW1hbmFnaW5nIHRlYW0gdG8gd29yayB0byBhIGZpeGVkIHNjb3BlPzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIHdvdWxkIGxpa2UgdG8gd29yayBjb2xsYWJvcmF0aXZlbHkgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLCBpbmNsdWRpbmcgdGhlIGRlZmluaXRpb24gb2Ygc3RhdGVtZW50cyBvZiB3b3JrIHdpdGhpbiB0aGlzIGNvbnRyYWN0LiA8YnI+PGJyPldlIHdvdWxkIGV4cGVjdCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyIHRvIG1hbmFnZSB0aGVpciBvd24gcmVzb3VyY2VzIGluIG9yZGVyIHRvIGRlbGl2ZXIgYWdhaW5zdCBhZ3JlZWQgc3RhdGVtZW50cyBvZiB3b3JrIHRvIGFncmVlZCB0aW1lbGluZXM8L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xNy48L3NwYW4+CiAgICAgIFdoYXQgaG9zdGluZyBhbmQgc3VwcG9ydCBsZXZlbHMgKFNMQSkgZG8geW91IGN1cnJlbnRseSBoYXZlIGluIHBsYWNlPzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk91ciBob3N0aW5nIGNvbnRyYWN0IGlzIG1hbmFnZWQgc2VwYXJhdGVseSB0byB0aGlzIHRlbmRlci4gVGhlIGN1cnJlbnQgc3VwcGxpZXIgaXMgQWNxdWlhLjxicj48YnI+V2UgY3VycmVudGx5IGhhdmUgYW4gYWdyZWVkIHN0YXRlbWVudCBvZiB3b3JrIGZvciBzdXBwb3J0IHdpdGggb3VyIGN1cnJlbnQgc3VwcGxpZXIsIHdoaWNoIGNvdmVycyBhZ3JlZW1lbnQgb24gcmVzcG9uc2UgdGltaW5ncyBhY3Jvc3MgY3JpdGljYWwsIGhpZ2gsIG5vcm1hbCwgYW5kIGxvdyBwcmlvcml0aWVzLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjE4Ljwvc3Bhbj4KICAgICAgV2hhdCBvdGhlciBhZGRpdGlvbmFsIHN1cHBsaWVycyB3b3VsZCB3ZSBiZSBleHBlY3RlZCB0byB3b3JrIGFsb25nc2lkZSBmb3IgdGhpcyBicmllZj88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaGUgYWRkaXRpb25hbCBzdXBwbGllcnMgd291bGQgYmUgZGVwZW5kZW50IG9uIHRoZSBzdGF0ZW1lbnRzIG9mIHdvcmsgYWdyZWVkIHRvIHdpdGhpbiB0aGlzIGNvbnRyYWN0Ljxicj48YnI+VGhlIGN1cnJlbnQga25vd24gYWRkaXRpb25hbCBzdXBwbGllciBpcyBBY3F1aWEsIHdobyBob3N0IGtldy5vcmc8L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4xOS48L3NwYW4+CiAgICAgIE92ZXJhbGwsIGhvdyBkbyB5b3Ugc2VlIHRoZSBidWRnZXQvZWZmb3J0IHNwbGl0IGJldHdlZW4gZS1jb21tZXJjZSB1cGdyYWRlLCBvbmdvaW5nIHNpdGUgbWFpbnRlbmFuY2UsIGFuZCBuZXcgcHJvZHVjdCBkZXZlbG9wbWVudD88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSB3b3VsZCBleHBlY3QgdG8gZGVmaW5lIGluZGl2aWR1YWwgYnVkZ2V0cyBmb3Igc3RhdGVtZW50cyBvZiB3b3JrIHdpdGhpbiB0aGlzIGNvbnRyYWN0IHdpdGggdGhlIGFwcG9pbnRlZCBzdXBwbGllciwgd2hpY2ggd2lsbCBiZSBkcml2ZW4gYnkgdGhlIGtleSBwcmlvcml0aWVzIGF0IHRoYXQgdGltZS48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4yMC48L3NwYW4+CiAgICAgIENhbiB5b3UgcHJvdmlkZSBpbmZvcm1hdGlvbiBhbnkgaW5mb3JtYXRpb24gb24gY3VycmVudCBQcm9vZiBvZiBjb25jZXB0cyBvciBhbHBoYSBwcm9ncmFtbWVzIGxvb2tpbmcgdG8gdXRpbGlzZSB0ZWNobm9sb2d5IHRvIGVuaGFuY2UgdmlzaXRvciBleHBlcmllbmNlIHRvIEtldywgV2FrZWh1cnN0IG9yIGFueSBvdGhlciBzaXRlcz88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSBhcmUgY3VycmVudGx5IG5vdCBpbiBhIHBvc2l0aW9uIHRvIHNoYXJlIGFueSBpbmZvcm1hdGlvbiBhcm91bmQgdGhpcy48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4yMS48L3NwYW4+CiAgICAgIENhbiB5b3UgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBhbnkgbWFya2V0aW5nIHN0cmF0ZWdpZXM7IGRpZ2l0YWwgb3IgdGhyb3VnaCBhbnkgb3RoZXIgY2hhbm5lbHM/PC9zcGFuPgogICAgCiAgPC90ZD4KICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+VGhlcmUgaXMgYW4gYWdyZWVkIGNyb3NzLW9yZ2FuaXNhdGlvbiByb2FkbWFwIGZvciBLZXfigJlzIGRpZ2l0YWwgb2ZmZXIgd2hpY2ggd2Ugd2lsbCBzaGFyZSB3aXRoIHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIuPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+MjIuPC9zcGFuPgogICAgICBQbGVhc2UgY2FuIHlvdSBzdXBwbHkgY3VycmVudCB2b2x1bWV0cmljcyBmb3IgdGhlIGN1cnJlbnQgb25saW5lIGFuZCBXaUZpIHZpc2l0b3IgZXhwZXJpZW5jZSBpbiB0aGUgZGlmZmVyZW50IGxvY2F0aW9uczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPldlIGVzdGltYXRlIHRoYXQgb3VyIHBoeXNpY2FsIHZpc2l0b3IgbnVtYmVycyBpbiAyMDE5IHdpbGwgYmUgYXJvdW5kIDIgbWlsbGlvbi4gPGJyPjxicj5XZSBhcmUgbm90IGluIGEgcG9zaXRpb24gdG8gc2hhcmUgZGF0ZSBvbiB0aGUgYW5udWFsIG51bWJlciBvZiB2aXNpdHMgdG8gb3VyIHZhcmlvdXMgb25saW5lIHBsYXRmb3Jtcy48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4yMy48L3NwYW4+CiAgICAgIFJlZmVyZW5jZSBpcyBtYWRlIHRoYXQgeW91IGFyZSBsb29raW5nIGZvciBhICYjMzQ7cGFydG5lciBhZ2VuY3kmIzM0Oy4gUGxlYXNlIGNhbiB5b3UgY2xhcmlmeSB0aGF0IHRoaXMgJiMzNDthZ2VuY3kgJiMzNDsgaXMgYSBzdHJhdGVnaWMgcGFydG5lcj88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5XZSBhcmUgbG9va2luZyBmb3IgYW4gYWdlbmN5IHRvIHdvcmsgY29sbGFib3JhdGl2ZWx5IHdpdGggS2V3LCB0byBkZXZlbG9wIGFuZCBpbXByb3ZlIG91ciBkaWdpdGFsIG9mZmVyLiA8YnI+PGJyPlRoZSBhZ2VuY3kgc2hvdWxkIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgdGhlaXIgYWJpbGl0eSB0byBkZXZlbG9wIGFuZCBtYWludGFpbiBEcnVwYWwgOCwgd2hpbHN0IGV2aWRlbmNpbmcgc3RyYXRlZ2ljIHN1cHBvcnQgZm9yIGJvdGggY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgb2JqZWN0aXZlczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjI0Ljwvc3Bhbj4KICAgICAgSXMgRHJ1cGFsIGJlaW5nIHVzZWQgZm9yIHRoZSBsZWFybmluZyBwbGF0Zm9ybXMgYWxzbz88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5PdXIgY3VycmVudGx5IGxlYXJuaW5nIHBsYXRmb3JtIHVzZXMgYSBzZXBhcmF0ZSBMTVMgdG8gb3VyIERydXBhbCA4IENNUyBmb3Iga2V3Lm9yZy4gPGJyPjxicj5Ib3dldmVyLCB0aGUgb25saW5lIGxlYXJuaW5nIG9mZmVyIGlzIGN1cnJlbnRseSB1bmRlciByZXZpZXcgYW5kIHdlIHdvdWxkIGhvcGUgdG8gYWRkcmVzcyB0aGlzIHdpdGggdGhlIGFwcG9pbnRlZCBzdXBwbGllciBhcyBhIHN0YXRlbWVudCBvZiB3b3JrIHVuZGVyIHRoaXMgY29udHJhY3QuPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+MjUuPC9zcGFuPgogICAgICBVbmRlciB0aGUgUHJvYmxlbSB0byBiZSBzb2x2ZWQgc2VjdGlvbiwgaXQgbWVudGlvbnMgdGhhdCB0aGUgd2Vic2l0ZSBEcnVwYWwgOC4gQ2FuIHlvdSBzdXBwbHkgYW55IGFyY2hpdGVjdHVyYWwgaW5mb3JtYXRpb24gb2YgdGhlIHRlY2hub2xvZ2llcyBpbnRlZ3JhdGVkIHdpdGhpbiBrZXcub3JnIGFuZCB0aGUgZUNvbW1lcmNlLCBwYXltZW50IGdhdGV3YXlzIGFuZCBDUk0/PC9zcGFuPgogICAgCiAgPC90ZD4KICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+Q3VycmVudGx5IHRoZSBzb2xlIGludGVncmF0aW9uIHdpdGhpbiBrZXcub3JnIGlzIHdpdGggb3VyIGVtYWlsIG1hcmtldGluZyBzZXJ2aWNlLCBEb3RkaWdpdGFsLiA8YnI+PGJyPldlIHdvdWxkIGhvcGUgdG8gaW50ZWdyYXRlIG90aGVyIHN5c3RlbXMgKHRvIGJlIGRlZmluZWQpIGludG8ga2V3Lm9yZyB1bmRlciB0aGlzIGNvbnRyYWN0Ljwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjI2Ljwvc3Bhbj4KICAgICAgUmVnYXJkaW5nIHRoZSB3ZWJzaXRlICh3aHkgc2luZ3VsYXI/IERvIHlvdSBtZWFuIGp1c3Qga2V3Lm9yZz8pIHlvdSBzYXkg4oCcT3VyIHdlYnNpdGUgaXMgYnVpbHQgb24gRHJ1cGFsIDgg4oCTIGFuZCB3ZSBhcmUgb3Blbi1taW5kZWQgYWJvdXQgd2hhdCBlY29tbWVyY2UgdGVjaG5vbG9neSB3ZSB1c2UgdG8gYnVpbGQgb3V0IG91ciBvZmZlciAod2UgY3VycmVudGx5IHVzZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgc29sdXRpb25zKeKAnS4gQ2FuIHdlIGtub3cgd2hhdCBraW5kIG9mIGRpZmZlcmVudCBzb2x1dGlvbnMvdGVjaG5vbG9naWVzIGFyZSB5b3UgcmVmZXJyaW5nIHRvPzwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlRoaXMgdGVuZGVyIGlzIHByZWRvbWluYXRlbHkgZm9jdXNlZCBvbiB0aGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mIG91ciBrZXcub3JnIHdlYnNpdGUsIGJ1dCB3ZSBoYXZlIG51bWVyb3VzIG90aGVyIHdlYnNpdGVzL3BsYXRmb3JtcyB0aGF0IG1heSBiZSB3b3JrZWQgdXBvbiB1bmRlciB0aGlzIGNvbnRyYWN0Ljwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjI3Ljwvc3Bhbj4KICAgICAgV2hhdCBkbyB5b3UgbWVhbiB3aGVuIHlvdSBzYXkgS2V34oCZcyBkaWdpdGFsIGVzdGF0ZT8gV2UgaGFkIGEgbG9vayBvbiB5b3VyIHdlYnNpdGUocykgYW5kIGRpc2NvdmVyZWQgeW91IGhhdmUgbWFueSB3ZWJzaXRlcyB1bmRlciBrZXcgZG9tYWluLjxicj5BcmUgdGhleSBhbGwgdXNpbmcgdGhlIHNhbWUgdGVjaG5vbG9neSDigJMgSXMgaXQgRHJ1cGFsPyBBcmUgeW91IHVzaW5nIEFjcXVpYSB3aXRoIERydXBhbDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPlRoaXMgdGVuZGVyIGlzIHByZWRvbWluYXRlbHkgZm9jdXNzZWQgb24gdGhlIGRldmVsb3BtZW50IGFuZCBtYWludGVuYW5jZSBvZiBvdXIga2V3Lm9yZyB3ZWJzaXRlLCBidXQgd2UgaGF2ZSBudW1lcm91cyBvdGhlciB3ZWJzaXRlcy9wbGF0Zm9ybXMgdGhhdCBtYXkgYmUgd29ya2VkIHVwb24gdW5kZXIgdGhpcyBjb250cmFjdC48YnI+S2V34oCZcyBkaWdpdGFsIGVzdGF0ZSByZWZlcnMgdG8gdGhlIGRpZ2l0YWwgcHJvZHVjdHMgdGhhdCBhcmUgb3duZWQgYnkgS2V3LiBBcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXN0aW9uLCB0aGVyZSBhcmUgbnVtZXJvdXMgd2Vic2l0ZXMgdGhhdCBhcmUgZWl0aGVyIHBhcnQgb2Ygb3Igc2VwYXJhdGUgdG8gdGhlIGtldy5vcmcgZG9tYWluLjxicj48YnI+QXQgdGhpcyB0aW1lLCBlYWNoIHByb2R1Y3QgaXMgYnVpbHQgb24gZGlmZmVyZW50L3NlcGFyYXRlIHN5c3RlbXMuIERydXBhbCA4IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgYnkgdGhlIGtldy5vcmcgc2l0ZS48YnI+PGJyPldlIGRvIHVzZSBBY3F1aWEgZm9yIG91ciBob3N0aW5nIHNvbHV0aW9uLCB3aGljaCBpcyBtYW5hZ2VkIGFzIGEgc2VwYXJhdGUgY29udHJhY3QgdG8gdGhpcyB0ZW5kZXIuPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj48c3BhbiBhcmlhLWxhYmVsPSJxdWVzdGlvbiI+MjguPC9zcGFuPgogICAgICBQbGVhc2UgY29uZmlybSB3aGV0aGVyIHlvdSB3b3VsZCBjb25zaWRlciBhIHN1cHBsaWVyIGlmIHRoZWlyIGRldmVsb3BtZW50IHRlYW0gaGF2ZSBleHBlcmllbmNlIG9mIG11bHRpcGxlIHBocCBmcmFtZXdvcmtzIGluY2x1ZGluZyBEcnVwYWwsIGFzIHdlbGwgYXMgdGhlIHRlY2huaWNhbCBleHBlcnRpc2UgdG8gd29yayB3aXRoIERydXBhbCA4LCBidXQgdGhleSBkbyBub3QgaGF2ZSBhIHB1Ymxpc2hlZCBjYXNlIHN0dWR5IGZvciBEcnVwYWwgOD88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5UaGUgYXNzZXNzbWVudCBvZiBzdXBwbGllcnMgd2lsbCBub3QgaW5jbHVkZSBhbnkgY2FzZSBzdHVkaWVzLjxicj48YnI+VGhlIGFzc2Vzc21lbnQgd2lsbCBiZSBvbiB3cml0dGVuIHByb3Bvc2FscyBpbiByZXNwb25zZSB0byB0aGlzIHRlbmRlciBhbmQgdHdvIGNsaWVudCByZWZlcmVuY2VzLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKCiAgPC9kaXY+CjwvZGl2PgoKCgoKICAgIDwvbWFpbj4KICA8L2Rpdj4KCgogICAgPGZvb3RlciBjbGFzcz0iZ3JvdXAganMtZm9vdGVyIiBpZD0iZm9vdGVyIiByb2xlPSJjb250ZW50aW5mbyI+CgogICAgICA8ZGl2IGNsYXNzPSJmb290ZXItd3JhcHBlciI+CiAgICAgICAgCiAgPGRpdiBjbGFzcz0iZm9vdGVyLWNhdGVnb3JpZXMiPgogIDxkaXYgY2xhc3M9ImZvb3Rlci1hYm91dCI+CiAgICA8aDI+CiAgICAgIENvbnRhY3QKICAgIDwvaDI+CiAgICA8dWw+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIvaGVscCI+RGlnaXRhbCBNYXJrZXRwbGFjZSBoZWxwPC9hPgogICAgICA8L2xpPgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmb290ZXItYnV5ZXJzIj4KICAgIDxoMj4KICAgICAgQWJvdXQgdGhlIERpZ2l0YWwgTWFya2V0cGxhY2UKICAgIDwvaDI+CiAgICA8dWw+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZGlnaXRhbC1tYXJrZXRwbGFjZS1idXllcnMtZ3VpZGUiPlNlcnZpY2VzIHlvdSBjYW4gYnV5PC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtbWFya2V0cGxhY2Utc3VwcGxpZXJzLWd1aWRlIj5TZXJ2aWNlcyB5b3UgY2FuIHNlbGw8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2Nyb3duLWNvbW1lcmNpYWwtc2VydmljZSI+QWJvdXQgQ3Jvd24gQ29tbWVyY2lhbCBTZXJ2aWNlPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvb3JnYW5pc2F0aW9ucy9nb3Zlcm5tZW50LWRpZ2l0YWwtc2VydmljZSI+QWJvdXQgR292ZXJubWVudCBEaWdpdGFsIFNlcnZpY2U8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIvZy1jbG91ZC9zdXBwbGllcnMiPkctQ2xvdWQgc3VwcGxpZXIgQeKAk1o8L2E+CiAgICAgIDwvbGk+CiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZvb3Rlci1zdXBwbGllcnMiPgogICAgPGgyPgogICAgICAgIEd1aWRhbmNlCiAgICA8L2gyPgogICAgPHVsPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtc3VwcGxpZXJzLWd1aWRlIj5BcHBseWluZyB0byBzZWxsIG9uIHRoZSBHLUNsb3VkIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zdXBwbGllcnMtZ3VpZGUiPkFwcGx5aW5nIHRvIHNlbGwgb24gdGhlIERpZ2l0YWwgT3V0Y29tZXMgYW5kIFNwZWNpYWxpc3RzIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9ob3ctdG8tc2VsbC15b3VyLWRpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzLXNlcnZpY2VzIj5SZXNwb25kaW5nIHRvIGJ1eWVyIHJlcXVpcmVtZW50cyBvbiB0aGUgRGlnaXRhbCBPdXRjb21lcyBhbmQgU3BlY2lhbGlzdHMgZnJhbWV3b3JrPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtYnV5ZXJzLWd1aWRlIj5CdXlpbmcgb24gdGhlIEctQ2xvdWQgZnJhbWV3b3JrPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzLWJ1eWVycy1ndWlkZSI+QnV5aW5nIG9uIHRoZSBEaWdpdGFsIE91dGNvbWVzIGFuZCBTcGVjaWFsaXN0cyBmcmFtZXdvcms8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvdGhlLWNyb3duLWhvc3RpbmctZGF0YS1jZW50cmVzLWZyYW1ld29yay1vbi10aGUtZGlnaXRhbC1tYXJrZXRwbGFjZSI+QnV5aW5nIG9uIHRoZSBDcm93biBIb3N0aW5nIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgIDwvdWw+CiAgPC9kaXY+CiAgPGhyLz4KPC9kaXY+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWV0YSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWV0YS1pbm5lciI+CiAgICAgICAgICAgIAogICAgPGgyIGNsYXNzPSJ2aXN1YWxseWhpZGRlbiI+U3VwcG9ydCBsaW5rczwvaDI+CiAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii90ZXJtcy1hbmQtY29uZGl0aW9ucyIgY2xhc3M9InRlcm1zLWFuZC1jb25kaXRpb25zIj5UZXJtcyBhbmQgY29uZGl0aW9uczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvY29va2llcyI+Q29va2llczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvcHJpdmFjeS1ub3RpY2UiPlByaXZhY3kgbm90aWNlPC9hPjwvbGk+CiAgICAgICAgPGxpPkJ1aWx0IGJ5IHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIj5Hb3Zlcm5tZW50IERpZ2l0YWwgU2VydmljZTwvYT48L2xpPgogICAgPC91bD4KCgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcGVuLWdvdmVybm1lbnQtbGljZW5jZSI+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImxvZ28iPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5hdGlvbmFsYXJjaGl2ZXMuZ292LnVrL2RvYy9vcGVuLWdvdmVybm1lbnQtbGljZW5jZS92ZXJzaW9uLzMvIiByZWw9ImxpY2Vuc2UiPk9wZW4gR292ZXJubWVudCBMaWNlbmNlPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwPkFsbCBjb250ZW50IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cubmF0aW9uYWxhcmNoaXZlcy5nb3YudWsvZG9jL29wZW4tZ292ZXJubWVudC1saWNlbmNlL3ZlcnNpb24vMy8iIHJlbD0ibGljZW5zZSI+T3BlbiBHb3Zlcm5tZW50IExpY2VuY2UgdjMuMDwvYT4sIGV4Y2VwdCB3aGVyZSBvdGhlcndpc2Ugc3RhdGVkPC9wPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcHlyaWdodCI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubmF0aW9uYWxhcmNoaXZlcy5nb3YudWsvaW5mb3JtYXRpb24tbWFuYWdlbWVudC9yZS11c2luZy1wdWJsaWMtc2VjdG9yLWluZm9ybWF0aW9uL2NvcHlyaWdodC1hbmQtcmUtdXNlL2Nyb3duLWNvcHlyaWdodC8iPiZjb3B5OyBDcm93biBjb3B5cmlnaHQ8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCiAgICA8ZGl2IGlkPSJnbG9iYWwtYXBwLWVycm9yIiBjbGFzcz0iYXBwLWVycm9yIGhpZGRlbiI+PC9kaXY+CgogICAgPHNjcmlwdCBzcmM9Ii9zdGF0aWMvamF2YXNjcmlwdHMvZ292dWstdGVtcGxhdGUuanM/MC4xOS4yIj48L3NjcmlwdD4KCiAgICAKICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc3RhdGljL2phdmFzY3JpcHRzL2FwcGxpY2F0aW9uLmpzP2Y4NGJlYTEzMWJiODhjY2JhOGQ5YWRkMDQ0N2I5NTRiIj48L3NjcmlwdD4KICAKCgogICAgCiAgICA8c2NyaXB0PmlmICh0eXBlb2Ygd2luZG93LkdPVlVLID09PSAndW5kZWZpbmVkJykgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5yZXBsYWNlKCdqcy1lbmFibGVkJywgJycpOzwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPg==
77
+ CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiIgY2xhc3M9ImdvdnVrLXRlbXBsYXRlICI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KICAgIDx0aXRsZT4KICBEaWdpdGFsIGRldmVsb3BtZW50LCBpbXByb3ZlbWVudCBhbmQgaW5ub3ZhdGlvbiBmb3IgUm95YWwgQm90YW5pYyBHYXJkZW5zLCBLZXcgLSBEaWdpdGFsIE1hcmtldHBsYWNlCjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHZpZXdwb3J0LWZpdD1jb3ZlciI+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzBiMGMwYyIgLz4gCiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KCiAgICAKICAgICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBzaXplcz0iMTZ4MTYgMzJ4MzIgNDh4NDgiIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2Zhdmljb24uaWNvIiB0eXBlPSJpbWFnZS94LWljb24iIC8+CiAgICAgIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSIvc3RhdGljL2ltYWdlcy9nb3Z1ay1tYXNrLWljb24uc3ZnIiBjb2xvcj0iIzBiMGMwYyI+IAogICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxODB4MTgwIiBocmVmPSIvc3RhdGljL2ltYWdlcy9nb3Z1ay1hcHBsZS10b3VjaC1pY29uLTE4MHgxODAucG5nIj4KICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTY3eDE2NyIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZ292dWstYXBwbGUtdG91Y2gtaWNvbi0xNjd4MTY3LnBuZyI+CiAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE1MngxNTIiIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2dvdnVrLWFwcGxlLXRvdWNoLWljb24tMTUyeDE1Mi5wbmciPgogICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2dvdnVrLWFwcGxlLXRvdWNoLWljb24ucG5nIj4KICAgIAoKICAgIAogIAoKCgoKCgoKCiAgCiAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJUS0dTR1puZkhweDEtbEtPdGhJMTdBTnR3azdmejNGNFNicjc3STBwcE8wIj4KCiAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9hcHBsaWNhdGlvbi5jc3M/NmY5NzFiNGQ3ZjUzYTJlODE2NmIzZTZhNDk3ZjhmMGMiIC8+CiAgCgogICAgCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iL3N0YXRpYy9pbWFnZXMvZ292dWstb3BlbmdyYXBoLWltYWdlLnBuZyI+CiAgPC9oZWFkPgogIDxib2R5IGNsYXNzPSJnb3Z1ay10ZW1wbGF0ZV9fYm9keSAiPgogICAgPHNjcmlwdD5kb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICgoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUpID8gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGpzLWVuYWJsZWQnIDogJ2pzLWVuYWJsZWQnKTs8L3NjcmlwdD4KICAgIAoKICAgIAogICAgICA8YSBocmVmPSIjbWFpbi1jb250ZW50IiBjbGFzcz0iZ292dWstc2tpcC1saW5rIj5Ta2lwIHRvIG1haW4gY29udGVudDwvYT4KICAgIAoKICAgIAogIAogIAoKCgoKPGRpdiBpZD0iZG0tY29va2llLWJhbm5lciIgY2xhc3M9ImRtLWNvb2tpZS1iYW5uZXIgZ292dWstd2lkdGgtY29udGFpbmVyIiBkYXRhLW1vZHVsZT0iZG0tY29va2llLWJhbm5lciIgcm9sZT0icmVnaW9uIiBhcmlhLWRlc2NyaWJlZGJ5PSJkbS1jb29raWUtYmFubmVyX19oZWFkaW5nIj4KICA8ZGl2IGNsYXNzPSJkbS1jb29raWUtYmFubmVyX193cmFwcGVyIj4KICAgIDxoMiBjbGFzcz0iZG0tY29va2llLWJhbm5lcl9faGVhZGluZyBnb3Z1ay1oZWFkaW5nLW0iIGlkPSJkbS1jb29raWUtYmFubmVyX19oZWFkaW5nIj4KICAgICAgQ2FuIHdlIHN0b3JlIGFuYWx5dGljcyBjb29raWVzIG9uIHlvdXIgZGV2aWNlPwogICAgPC9oMj4KICAgIDxwIGNsYXNzPSJnb3Z1ay1ib2R5Ij4KICAgICAgQW5hbHl0aWNzIGNvb2tpZXMgaGVscCB1cyB1bmRlcnN0YW5kIGhvdyBvdXIgd2Vic2l0ZSBpcyBiZWluZyB1c2VkLgogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iZG0tY29va2llLWJhbm5lcl9fYnV0dG9ucyI+CiAgICAgIDxidXR0b24gY2xhc3M9ImdvdnVrLWJ1dHRvbiBkbS1jb29raWUtYmFubmVyX19idXR0b24gZG0tY29va2llLWJhbm5lcl9fYnV0dG9uLS1hY2NlcHQiIHR5cGU9InN1Ym1pdCIgZGF0YS1hY2NlcHQtY29va2llcz0idHJ1ZSIgYXJpYS1kZXNjcmliZWRieT0iZG0tY29va2llLWJhbm5lcl9faGVhZGluZyI+CiAgICAgICAgWWVzPHNwYW4gY2xhc3M9ImdvdnVrLXZpc3VhbGx5LWhpZGRlbiI+LCBEaWdpdGFsIE1hcmtldHBsYWNlIGNhbiBzdG9yZSBhbmFseXRpY3MgY29va2llcyBvbiB5b3VyIGRldmljZTwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImdvdnVrLWJ1dHRvbiBkbS1jb29raWUtYmFubmVyX19idXR0b24gZG0tY29va2llLWJhbm5lcl9fYnV0dG9uLS1yZWplY3QiIHR5cGU9InN1Ym1pdCIgZGF0YS1hY2NlcHQtY29va2llcz0iZmFsc2UiIGFyaWEtZGVzY3JpYmVkYnk9ImRtLWNvb2tpZS1iYW5uZXJfX2hlYWRpbmciPgogICAgICAgIE5vPHNwYW4gY2xhc3M9ImdvdnVrLXZpc3VhbGx5LWhpZGRlbiI+LCBEaWdpdGFsIE1hcmtldHBsYWNlIGNhbm5vdCBzdG9yZSBhbmFseXRpY3MgY29va2llcyBvbiB5b3VyIGRldmljZTwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxhIGNsYXNzPSJnb3Z1ay1saW5rIGRtLWNvb2tpZS1iYW5uZXJfX2xpbmsiIGhyZWY9Ii9jb29raWVzIj5Ib3cgRGlnaXRhbCBNYXJrZXRwbGFjZSB1c2VzIGNvb2tpZXM8L2E+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZG0tY29va2llLWJhbm5lcl9fY29uZmlybWF0aW9uIiB0YWJpbmRleD0iLTEiPgogICAgPHAgY2xhc3M9ImRtLWNvb2tpZS1iYW5uZXJfX2NvbmZpcm1hdGlvbi1tZXNzYWdlIGdvdnVrLWJvZHkiPgogICAgICBZb3UgY2FuIDxhIGNsYXNzPSJnb3Z1ay1saW5rIiBocmVmPSIvdXNlci9jb29raWUtc2V0dGluZ3MiPmNoYW5nZSB5b3VyIGNvb2tpZSBzZXR0aW5nczwvYT4gYXQgYW55IHRpbWUuCiAgICA8L3A+CiAgICA8YnV0dG9uIGNsYXNzPSJkbS1jb29raWUtYmFubmVyX19oaWRlLWJ1dHRvbiBnb3Z1ay1saW5rIiBkYXRhLWhpZGUtY29va2llLWJhbm5lcj0idHJ1ZSIgcm9sZT0ibGluayI+SGlkZTwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgCgoKCgoKICAKICAKCgoKICAKCjxoZWFkZXIgY2xhc3M9ImdvdnVrLWhlYWRlciAiIHJvbGU9ImJhbm5lciIgZGF0YS1tb2R1bGU9ImhlYWRlciI+CiAgPGRpdiBjbGFzcz0iZ292dWstaGVhZGVyX19jb250YWluZXIgZ292dWstd2lkdGgtY29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xvZ28iPgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0iZ292dWstaGVhZGVyX19saW5rIGdvdnVrLWhlYWRlcl9fbGluay0taG9tZXBhZ2UiPgogICAgICAgIDxzcGFuIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xvZ290eXBlIj4KICAgICAgICAgIAogICAgICAgICAgPHN2ZwogICAgICAgICAgICByb2xlPSJwcmVzZW50YXRpb24iCiAgICAgICAgICAgIGZvY3VzYWJsZT0iZmFsc2UiCiAgICAgICAgICAgIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xvZ290eXBlLWNyb3duIgogICAgICAgICAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgICAgICAgIHZpZXdib3g9IjAgMCAxMzIgOTciCiAgICAgICAgICAgIGhlaWdodD0iMzIiCiAgICAgICAgICAgIHdpZHRoPSIzNiIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgICAgICAgICAgICBkPSJNMjUgMzAuMmMzLjUgMS41IDcuNy0uMiA5LjEtMy43IDEuNS0zLjYtLjItNy44LTMuOS05LjItMy42LTEuNC03LjYuMy05LjEgMy45LTEuNCAzLjUuMyA3LjUgMy45IDl6TTkgMzkuNWMzLjYgMS41IDcuOC0uMiA5LjItMy43IDEuNS0zLjYtLjItNy44LTMuOS05LjEtMy42LTEuNS03LjYuMi05LjEgMy44LTEuNCAzLjUuMyA3LjUgMy44IDl6TTQuNCA1Ny4yYzMuNSAxLjUgNy43LS4yIDkuMS0zLjggMS41LTMuNi0uMi03LjctMy45LTkuMS0zLjUtMS41LTcuNi4zLTkuMSAzLjgtMS40IDMuNS4zIDcuNiAzLjkgOS4xem0zOC4zLTIxLjRjMy41IDEuNSA3LjctLjIgOS4xLTMuOCAxLjUtMy42LS4yLTcuNy0zLjktOS4xLTMuNi0xLjUtNy42LjMtOS4xIDMuOC0xLjMgMy42LjQgNy43IDMuOSA5LjF6bTY0LjQtNS42Yy0zLjYgMS41LTcuOC0uMi05LjEtMy43LTEuNS0zLjYuMi03LjggMy44LTkuMiAzLjYtMS40IDcuNy4zIDkuMiAzLjkgMS4zIDMuNS0uNCA3LjUtMy45IDl6bTE1LjkgOS4zYy0zLjYgMS41LTcuNy0uMi05LjEtMy43LTEuNS0zLjYuMi03LjggMy43LTkuMSAzLjYtMS41IDcuNy4yIDkuMiAzLjggMS41IDMuNS0uMyA3LjUtMy44IDl6bTQuNyAxNy43Yy0zLjYgMS41LTcuOC0uMi05LjItMy44LTEuNS0zLjYuMi03LjcgMy45LTkuMSAzLjYtMS41IDcuNy4zIDkuMiAzLjggMS4zIDMuNS0uNCA3LjYtMy45IDkuMXpNODkuMyAzNS44Yy0zLjYgMS41LTcuOC0uMi05LjItMy44LTEuNC0zLjYuMi03LjcgMy45LTkuMSAzLjYtMS41IDcuNy4zIDkuMiAzLjggMS40IDMuNi0uMyA3LjctMy45IDkuMXpNNjkuNyAxNy43bDguOSA0LjdWOS4zbC04LjkgMi44Yy0uMi0uMy0uNS0uNi0uOS0uOUw3Mi40IDBINTkuNmwzLjUgMTEuMmMtLjMuMy0uNi41LS45LjlsLTguOC0yLjh2MTMuMWw4LjgtNC43Yy4zLjMuNi43LjkuOWwtNSAxNS40di4xYy0uMi44LS40IDEuNi0uNCAyLjQgMCA0LjEgMy4xIDcuNSA3IDguMWguMmMuMyAwIC43LjEgMSAuMS40IDAgLjcgMCAxLS4xaC4yYzQtLjYgNy4xLTQuMSA3LjEtOC4xIDAtLjgtLjEtMS43LS40LTIuNFYzNGwtNS4xLTE1LjRjLjQtLjIuNy0uNiAxLS45ek02NiA5Mi44YzE2LjkgMCAzMi44IDEuMSA0Ny4xIDMuMiA0LTE2LjkgOC45LTI2LjcgMTQtMzMuNWwtOS42LTMuNGMxIDQuOSAxLjEgNy4yIDAgMTAuMi0xLjUtMS40LTMtNC4zLTQuMi04LjdMMTA4LjYgNzZjMi44LTIgNS0zLjIgNy41LTMuMy00LjQgOS40LTEwIDExLjktMTMuNiAxMS4yLTQuMy0uOC02LjMtNC42LTUuNi03LjkgMS00LjcgNS43LTUuOSA4LS41IDQuMy04LjctMy0xMS40LTcuNi04LjggNy4xLTcuMiA3LjktMTMuNSAyLjEtMjEuMS04IDYuMS04LjEgMTIuMy00LjUgMjAuOC00LjctNS40LTEyLjEtMi41LTkuNSA2LjIgMy40LTUuMiA3LjktMiA3LjIgMy4xLS42IDQuMy02LjQgNy44LTEzLjUgNy4yLTEwLjMtLjktMTAuOS04LTExLjItMTMuOCAyLjUtLjUgNy4xIDEuOCAxMSA3LjNMODAuMiA2MGMtNC4xIDQuNC04IDUuMy0xMi4zIDUuNCAxLjQtNC40IDgtMTEuNiA4LTExLjZINTUuNXM2LjQgNy4yIDcuOSAxMS42Yy00LjItLjEtOC0xLTEyLjMtNS40bDEuNCAxNi40YzMuOS01LjUgOC41LTcuNyAxMC45LTcuMy0uMyA1LjgtLjkgMTIuOC0xMS4xIDEzLjgtNy4yLjYtMTIuOS0yLjktMTMuNS03LjItLjctNSAzLjgtOC4zIDcuMS0zLjEgMi43LTguNy00LjYtMTEuNi05LjQtNi4yIDMuNy04LjUgMy42LTE0LjctNC42LTIwLjgtNS44IDcuNi01IDEzLjkgMi4yIDIxLjEtNC43LTIuNi0xMS45LjEtNy43IDguOCAyLjMtNS41IDcuMS00LjIgOC4xLjUuNyAzLjMtMS4zIDcuMS01LjcgNy45LTMuNS43LTktMS44LTEzLjUtMTEuMiAyLjUuMSA0LjcgMS4zIDcuNSAzLjNsLTQuNy0xNS40Yy0xLjIgNC40LTIuNyA3LjItNC4zIDguNy0xLjEtMy0uOS01LjMgMC0xMC4ybC05LjUgMy40YzUgNi45IDkuOSAxNi43IDE0IDMzLjUgMTQuOC0yLjEgMzAuOC0zLjIgNDcuNy0zLjJ6IgogICAgICAgICAgICA+PC9wYXRoPgogICAgICAgICAgICAKICAgICAgICAgICAgPGltYWdlIHNyYz0iL2Fzc2V0cy9pbWFnZXMvZ292dWstbG9nb3R5cGUtY3Jvd24ucG5nIiB4bGluazpocmVmPSIiIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xvZ290eXBlLWNyb3duLWZhbGxiYWNrLWltYWdlIiB3aWR0aD0iMzYiIGhlaWdodD0iMzIiPjwvaW1hZ2U+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xvZ290eXBlLXRleHQiPgogICAgICAgICAgICBHT1YuVUsKICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgICAgCiAgICAgICAgPHNwYW4gY2xhc3M9ImdvdnVrLWhlYWRlcl9fcHJvZHVjdC1uYW1lIj4KICAgICAgICAgIERpZ2l0YWwgTWFya2V0cGxhY2UKICAgICAgICA8L3NwYW4+CiAgICAgICAgCiAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2NvbnRlbnQiPgoKICAgIAoKICAgIAogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIHJvbGU9ImJ1dHRvbiIgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbWVudS1idXR0b24ganMtaGVhZGVyLXRvZ2dsZSIgYXJpYS1jb250cm9scz0ibmF2aWdhdGlvbiIgYXJpYS1sYWJlbD0iU2hvdyBvciBoaWRlIFRvcCBMZXZlbCBOYXZpZ2F0aW9uIj5NZW51PC9idXR0b24+CiAgICA8bmF2PgogICAgICA8dWwgaWQ9Im5hdmlnYXRpb24iIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX25hdmlnYXRpb24gIiBhcmlhLWxhYmVsPSJUb3AgTGV2ZWwgTmF2aWdhdGlvbiI+CiAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX25hdmlnYXRpb24taXRlbSI+CiAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2J1eWluZy1hbmQtc2VsbGluZy1vbi10aGUtZGlnaXRhbC1tYXJrZXRwbGFjZSI+CiAgICAgICAgICAgICAgICBHdWlkYW5jZQogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstaGVhZGVyX19uYXZpZ2F0aW9uLWl0ZW0iPgogICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xpbmsiIGhyZWY9Ii9oZWxwIj4KICAgICAgICAgICAgICAgIEhlbHAKICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAKICAgICAgICAKICAgICAgICAgIAogICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbmF2aWdhdGlvbi1pdGVtIj4KICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstaGVhZGVyX19saW5rIiBocmVmPSIvdXNlci9sb2dpbiI+CiAgICAgICAgICAgICAgICBMb2cgaW4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAKICAgICAgICAKICAgICAgPC91bD4KICAgIDwvbmF2PgogICAgCiAgICA8L2Rpdj4KICAgIAogIDwvZGl2Pgo8L2hlYWRlcj4KCgogICAgCiAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLXdpZHRoLWNvbnRhaW5lciI+CiAgICAgICAgCiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1waGFzZS1iYW5uZXIiPgogIDxwIGNsYXNzPSJnb3Z1ay1waGFzZS1iYW5uZXJfX2NvbnRlbnQiPjxzdHJvbmcgY2xhc3M9ImdvdnVrLXRhZyBnb3Z1ay1waGFzZS1iYW5uZXJfX2NvbnRlbnRfX3RhZyAiPgogIGJldGEKPC9zdHJvbmc+PHNwYW4gY2xhc3M9ImdvdnVrLXBoYXNlLWJhbm5lcl9fdGV4dCI+CiAgICAgIEhlbHAgdXMgaW1wcm92ZSB0aGUgRGlnaXRhbCBNYXJrZXRwbGFjZSAtIDxhIGNsYXNzPSJnb3Z1ay1saW5rIiBocmVmPSIvaGVscCI+c2VuZCB5b3VyIGZlZWRiYWNrPC9hPgogICAgPC9zcGFuPgogIDwvcD4KPC9kaXY+CiAgCiAgCjxkaXYgY2xhc3M9ImdvdnVrLWJyZWFkY3J1bWJzIj4KICA8b2wgY2xhc3M9ImdvdnVrLWJyZWFkY3J1bWJzX19saXN0Ij4KICAKICAgIAogICAgPGxpIGNsYXNzPSJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtIj4KICAgICAgPGEgY2xhc3M9ImdvdnVrLWJyZWFkY3J1bWJzX19saW5rIiBocmVmPSIvIj5EaWdpdGFsIE1hcmtldHBsYWNlPC9hPgogICAgPC9saT4KICAgIAogIAogICAgCiAgICA8bGkgY2xhc3M9ImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW0iPgogICAgICA8YSBjbGFzcz0iZ292dWstYnJlYWRjcnVtYnNfX2xpbmsiIGhyZWY9Ii9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy9vcHBvcnR1bml0aWVzIj5TdXBwbGllciBvcHBvcnR1bml0aWVzPC9hPgogICAgPC9saT4KICAgIAogIAogIDwvb2w+CjwvZGl2PgoKCiAgICAgICAgPG1haW4gY2xhc3M9ImdvdnVrLW1haW4td3JhcHBlciAiIGlkPSJtYWluLWNvbnRlbnQiIHJvbGU9Im1haW4iPgogICAgICAgICAgCiAgCiAgCgogIAogICAgCiAgCiAgCgoKPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwiPgogICAgCiAgICAgIDxkaXYgY2xhc3M9ImJhbm5lci10ZW1wb3JhcnktbWVzc2FnZS13aXRob3V0LWFjdGlvbiI+CiAgCiAgICA8aDI+CiAgICAgIFRoaXMgb3Bwb3J0dW5pdHkgd2FzIGNhbmNlbGxlZAogICAgPC9oMj4KICAKICAKICAgIDxwIGNsYXNzPSJiYW5uZXItbWVzc2FnZSI+CiAgICAgIFRoZSBidXllciBjYW5jZWxsZWQgdGhpcyBvcHBvcnR1bml0eSwgZm9yIGV4YW1wbGUgYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBoYXZlIHRoZSBidWRnZXQuIFRoZXkgbWF5IHB1Ymxpc2ggYW4gdXBkYXRlZCB2ZXJzaW9uIGxhdGVyLgogICAgPC9wPgogIAogIAogIAo8L2Rpdj4KICAgIAogIDwvZGl2Pgo8L2Rpdj4KCgo8ZGl2IGNsYXNzPSJnb3Z1ay1ncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkcyI+CiAgICA8c3BhbiBjbGFzcz0iZ292dWstY2FwdGlvbi1sIj5Sb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldzwvc3Bhbj4KICAgIDxoMSBjbGFzcz0iZ292dWstaGVhZGluZy1sIj5EaWdpdGFsIGRldmVsb3BtZW50LCBpbXByb3ZlbWVudCBhbmQgaW5ub3ZhdGlvbiBmb3IgUm95YWwgQm90YW5pYyBHYXJkZW5zLCBLZXc8L2gxPgogICAgPHNwYW4gZGF0YS1sb3Q9ImRpZ2l0YWwtb3V0Y29tZXMiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJnb3Z1ay1ncmlkLXJvdyBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tOSI+CiAgPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1jb2x1bW4tb25lLXRoaXJkIGFwcC1zdGF0LWJsb2NrIiBpZD0iaW5jb21wbGV0ZS1hcHBsaWNhdGlvbnMiPgogICA8aDI+CiAgICAgIDxzcGFuIGNsYXNzPSJnb3Z1ay0hLWZvbnQtc2l6ZS0zNiBnb3Z1ay0hLWRpc3BsYXktYmxvY2siPjMyPC9zcGFuPgogICAgICA8c3Bhbj5JbmNvbXBsZXRlIGFwcGxpY2F0aW9uczwvc3Bhbj4KICAgPC9oMj4KICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1mb250LXNpemUtMTYiPjI3IFNNRSwgNSBsYXJnZTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLW9uZS10aGlyZCBhcHAtc3RhdC1ibG9jayIgaWQ9ImNvbXBsZXRlZC1hcHBsaWNhdGlvbnMiPgogICA8aDI+CiAgICAgIDxzcGFuIGNsYXNzPSJnb3Z1ay0hLWZvbnQtc2l6ZS0zNiBnb3Z1ay0hLWRpc3BsYXktYmxvY2siPjMwPC9zcGFuPgogICAgICA8c3Bhbj5Db21wbGV0ZWQgYXBwbGljYXRpb25zPC9zcGFuPgogICA8L2gyPgogICA8cCBjbGFzcz0iZ292dWstYm9keSBnb3Z1ay0hLWZvbnQtc2l6ZS0xNiI+MjYgU01FLCA0IGxhcmdlPC9wPgo8L2Rpdj4KCjwvZGl2PgoKPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwiPgogICAgCgo8aDIgY2xhc3M9ImdvdnVrLXZpc3VhbGx5LWhpZGRlbiI+SW1wb3J0YW50IGRhdGVzPC9oMj4KCgoKICAKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiIGlkPSJvcHBvcnR1bml0eS1pbXBvcnRhbnQtZGF0ZXMiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBQdWJsaXNoZWQKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBUaHVyc2RheSAzMSBPY3RvYmVyIDIwMTkKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgRGVhZGxpbmUgZm9yIGFza2luZyBxdWVzdGlvbnMKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBUaHVyc2RheSA3IE5vdmVtYmVyIDIwMTkgYXQgMTE6NTlwbSBHTVQKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgQ2xvc2luZyBkYXRlIGZvciBhcHBsaWNhdGlvbnMKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBUaHVyc2RheSAxNCBOb3ZlbWJlciAyMDE5IGF0IDExOjU5cG0gR01UCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgoKICA8aDIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtMSIgY2xhc3M9ImdvdnVrLWhlYWRpbmctbSBhcHAtc3VtbWFyeS1saXN0LWhlYWRpbmciPk92ZXJ2aWV3PC9oMj4KICAKICAKCgogIAoKICAKCiAgCgogIAoKICAKCiAgCjxkbCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdC0tdG9wLWJvcmRlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tOCI+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFN1bW1hcnkgb2YgdGhlIHdvcmsKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBXZSBhcmUgbG9va2luZyBmb3IgYSBwYXJ0bmVyIGFnZW5jeSB0byB3b3JrIHdpdGggdXMgb24gY29udGludWluZyB0byBpbXByb3ZlIHRoZSBLZXcmIzM5O3MgZGlnaXRhbCBlc3RhdGUsIGluY2x1ZGluZyB0aGUgY29udGludW91cyBpbXByb3ZlbWVudCBvZiBrZXcub3JnLCB0aGUgdXBncmFkZSBvZiBvdXIgZS1jb21tZXJjZSBhbmQgb25saW5lIGxlYXJuaW5nIG9mZmVyLCBhbG9uZ3NpZGUgb24tc2l0ZSBpbXByb3ZlbWVudHMgdG8gdmlzaXRvciBleHBlcmllbmNlIHRocm91Z2ggZGlnaXRhbCBjaGFubmVscy4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgTGF0ZXN0IHN0YXJ0IGRhdGUKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBNb25kYXkgMTggTm92ZW1iZXIgMjAxOQogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBFeHBlY3RlZCBjb250cmFjdCBsZW5ndGgKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICAyIHllYXJzCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIExvY2F0aW9uCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgTG9uZG9uCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIE9yZ2FuaXNhdGlvbiB0aGUgd29yayBpcyBmb3IKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBSb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldwogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBCdWRnZXQgcmFuZ2UKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBNYXhpbXVtIG9mIMKjODAwLDAwMCBvdmVyIHR3byB5ZWFycyAtIHRvIGNvdmVyIGEgc2lnbmlmaWNhbnQgZS1jb21tZXJjZSByZS1kZXZlbG9wbWVudCBwcm9qZWN0LCBhcyB3ZWxsIGFzIG9uZ29pbmcgaW1wcm92ZW1lbnRzIHRvIGV4aXN0aW5nIHByb3BlcnRpZXMgYXMgd2VsbCBhcyBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSAtIGV4YWN0IHNwZW5kIHRvIGJlIGFncmVlZCBpbiBzZXBhcmF0ZSBzbWFsbGVyIHN0YXRlbWVudHMgb2Ygd29yay4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKPC9kbD4KCiAgPGgyIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTIiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5BYm91dCB0aGUgd29yazwvaDI+CiAgCiAgCgoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKPGRsIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0LS10b3AtYm9yZGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS04Ij4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgV2h5IHRoZSB3b3JrIGlzIGJlaW5nIGRvbmUKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBSb3lhbCBCb3RhbmljIEdhcmRlbnMsIEtldyBpcyBhIHdvcmxkIGxlYWRpbmcgcGxhbnQgc2NpZW5jZSBhbmQgY29uc2VydmF0aW9uIG9yZ2FuaXNhdGlvbi4gV2UgcnVuIHR3byBib3RhbmljIGdhcmRlbnMgLSBLZXcgR2FyZGVucyBpbiBMb25kb24gYW5kIFdha2VodXJzdCBpbiBTdXNzZXguIEtldyBHYXJkZW5zIGlzIGEgVU5FU0NPIFdvcmxkIEhlcml0YWdlIFNpdGUgYW5kIGxlYWRpbmcgdmlzaXRvciBhdHRyYWN0aW9uLCB3ZWxjb21pbmcgMm0gdmlzaXRvcnMgaW4gMjAxOC8xOS4gV2FrZWh1cnN0IGlzIEtld+KAmXMg4oCYd2lsZCBib3RhbmljIGdhcmRlbuKAmSBhbmQgd2VsY29tZXMgb3ZlciAzMDBrIHZpc2l0b3JzIHBlciB5ZWFyLiA8YnI+PGJyPldlIGFyZSBsb29raW5nIGZvciBhIHBhcnRuZXIgYWdlbmN5IHRvIHdvcmsgd2l0aCB1cyBvbiBjb250aW51aW5nIHRvIGltcHJvdmUgdGhlIEtldyYjMzk7cyBkaWdpdGFsIGVzdGF0ZSwgaW5jbHVkaW5nIHRoZSBjb250aW51b3VzIGltcHJvdmVtZW50IG9mIGtldy5vcmcsIHRoZSB1cGdyYWRlIG9mIG91ciBlY29tbWVyY2UgYW5kIG9ubGluZSBsZWFybmluZyBvZmZlciwgYWxvbmdzaWRlIG9uLXNpdGUgaW1wcm92ZW1lbnRzIHRvIHZpc2l0b3IgZXhwZXJpZW5jZSB0aHJvdWdoIGRpZ2l0YWwgY2hhbm5lbHMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFByb2JsZW0gdG8gYmUgc29sdmVkCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2Ugd2FudCB0byBmdXJ0aGVyIGltcHJvdmUgY3VzdG9tZXIgam91cm5leXMgYWNyb3NzIG91ciBkaWdpdGFsIGVzdGF0ZSB0byBoZWxwIHVzIG1lZXQgb3VyIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIGdvYWxzLiBGcm9tIGltcHJvdmluZyB1cHNlbGwgb2YgbWVtYmVyc2hpcHMgdG8gZW5jb3VyYWdpbmcgZG9uYXRpb25zIGFuZCBpbmNyZWFzaW5nIG91ciBvbmxpbmUgcmV0YWlsIGNhcGFiaWxpdGllcywgb3VyIG9mZmVyIGlzIGJyb2FkIGFuZCBhdCB0aW1lcyBjb25mdXNpbmcgZm9yIHVzZXJzLiA8YnI+PGJyPldlIHJlLWxhdW5jaGVkIG91ciBtYWluIHdlYnNpdGUgZWFybHkgaW4gMjAxOSwgYW5kIGFyZSBub3cgaG9waW5nIHRvIHR1cm4gb3VyIGF0dGVudGlvbiB0byBpbXByb3Zpbmcgb3VyIGVjb21tZXJjZSBvZmZlciAocmV0YWlsLCBtZW1iZXJzaGlwcywgZG9uYXRpb25zLCB0aWNrZXRzKSwgYWxvbmcgd2l0aCBjb250aW51aW5nIHRvIHRlc3QgYW5kIGltcHJvdmUga2V3Lm9yZy4gPGJyPjxicj5PdXIgd2Vic2l0ZSBpcyBidWlsZCBvbiBEcnVwYWwgOCAtIGFuZCB3ZSBhcmUgb3Blbi1taW5kZWQgYWJvdXQgd2hhdCBlY29tbWVyY2UgdGVjaG5vbG9neSB3ZSB1c2UgdG8gYnVpbGQgb3V0IG91ciBvZmZlciAod2UgY3VycmVudGx5IHVzZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgc29sdXRpb25zKQogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBXaG8gdGhlIHVzZXJzIGFyZSBhbmQgd2hhdCB0aGV5IG5lZWQgdG8gZG8KICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBBcyBhIHBvdGVudGlhbCB2aXNpdG9yLCBJIG5lZWQgdG8gZmluZCBvdXQgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCYjMzk7cyB0aGVyZSwgd2hhdCYjMzk7cyBvbiBhbmQgaG93IG11Y2ggaXQgY29zdHMsIHNvIEkgY2FuIGRlY2lkZSBpZiBJIHdhbnQgdG8gdmlzaXQuPGJyPjxicj5BcyBhIGhvcnRpY3VsdHVyZSBmYW4sIEkgY2FuIGZpbmQgYW5kIHB1cmNoYXNlIGJlYXV0aWZ1bCBwcm9kdWN0cywgc28gdGhhdCBJIGNhbiBtYWtlIG15IGhvdXNlIGJlYXV0aWZ1bC48YnI+PGJyPkFzIGEgbGFzdC1taW51dGUgc2hvcHBlciwgSSBjYW4gcHVyY2hhc2UgYSBnaWZ0IG1lbWJlcnNoaXAgdm91Y2hlciBmb3IgbXkgbXVtLCBzbyB0aGF0IEkgaGF2ZSBzb21ldGhpbmcgdG8gZ2l2ZSBoZXIgb24gaGVyIGJpcnRoZGF5Ljxicj48YnI+QXMgYSBib3RhbmlzdCwgSSBjYW4gZmluZCBvdXQgYWJvdXQgcGxhbnQgcmVzZWFyY2ggaGFwcGVuaW5nIGF0IFJCRyBLZXcsIHNvIHRoYXQgSSBjYW4gaW5mb3JtIG15IG93biByZXNlYXJjaCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsICBwYXJ0bmVyc2hpcHMvY29sbGFib3JhdGlvbnMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEVhcmx5IG1hcmtldCBlbmdhZ2VtZW50CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2UgaGF2ZSBiZWVuIHRyYW5zcGFyZW50IHdpdGggb3VyIGV4aXN0aW5nIHN1cHBsaWVyIGFib3V0IG91ciByb2FkbWFwLCBhbmQgd2Ugd291bGQgZXhwZWN0IHRoZW0gdG8gc3VibWl0IGEgcmVzcG9uc2UgdG8gdGhlc2UgcmVxdWlyZW1lbnRzLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBBbnkgd29yayB0aGF04oCZcyBhbHJlYWR5IGJlZW4gZG9uZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIHJlLWxhdW5jaGVkIGtldy5vcmcgaW4gTWFyY2ggMjAxOSwgYW5kIGhhdmUgY29udGludWVkIHRvIG1ha2UgaXRlcmF0aXZlIGltcHJvdmVtZW50cyBvdmVyIHRoZSBwYXN0IHNpeCBtb250aHMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEV4aXN0aW5nIHRlYW0KICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBZb3UmIzM5O2xsIGJlIHdvcmtpbmcgcHJpbWFyaWx5IHdpdGggS2V3JiMzOTtzIERpZ2l0YWwgRXhwZXJpZW5jZSB0ZWFtLCBhbmQgcHJpbWFyaWx5IHdpdGggdGhlIEhlYWQgb2YgRGlnaXRhbCBFeHBlcmllbmNlLCBTZW5pb3IgUHJvZHVjdCBNYW5hZ2VyLCBQcm9kdWN0IE1hbmFnZXIsIEp1bmlvciBQcm9kdWN0IE1hbmFnZXIsIFVJIERlc2lnbmVyLCBTZW5pb3IgQ29udGVudCBNYW5hZ2VyIGFuZCBDb250ZW50IFByb2R1Y2Vycy4gPGJyPjxicj5XaGVyZSByZWxldmFudCB5b3UmIzM5O2xsIGFsc28gd29yayB3aXRoIHN0YWtlaG9sZGVycyBpbiBvdGhlciB0ZWFtcyBhY3Jvc3MgS2V3LCBmb3IgZXhhbXBsZSBvdXIgRGlnaXRhbCBDb21tZXJjaWFsIE1hbmFnZXIgZm9yIEVDb21tZXJjZS4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgQ3VycmVudCBwaGFzZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIExpdmUKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKPC9kbD4KCiAgPGgyIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTMiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5Xb3JrIHNldHVwPC9oMj4KICAKICAKCgogIAoKICAKCiAgCjxkbCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdC0tdG9wLWJvcmRlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tOCI+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEFkZHJlc3Mgd2hlcmUgdGhlIHdvcmsgd2lsbCB0YWtlIHBsYWNlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgUm95YWwgQm90YW5pYyBHYXJkZW5zLCBLZXcKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgV29ya2luZyBhcnJhbmdlbWVudHMKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBXZSBleHBlY3QgdG8gbmVnb3RpYXRlIGEgZmxleGlibGUgYXJyYW5nZW1lbnQgd2l0aCB0aGUgc3VwcGxpZXIgYW5kIGJlbGlldmUgaXQgaXMgaW1wb3J0YW50IHRvIGhhdmUgcmVndWxhciBmYWNlLXRvLWZhY2UgbWVldGluZ3MuIDxicj48YnI+V2hlbiBpbiB0aGUgbWlkc3Qgb2Ygb25nb2luZyBzcHJpbnRzLCB3ZSB3b3VsZCBsaWtlIHRvIGV4cGxvcmUgY28tbG9jYXRpbmcgb24gYSByZWd1bGFyIGJhc2lzIChvbmNlIGEgd2VlayBvciBvbmNlIGEgZm9ydG5pZ2h0KSAtIHRoaXMgY2FuIHRha2UgcGxhY2UgZWl0aGVyIG9uIHNpdGUgYXQgS2V3IG9yIGF0IHRoZSBzdXBwbGllciYjMzk7cyBvZmZpY2VzLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBTZWN1cml0eSBjbGVhcmFuY2UKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBOb25lCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgogIDxoMiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy00IiBjbGFzcz0iZ292dWstaGVhZGluZy1tIGFwcC1zdW1tYXJ5LWxpc3QtaGVhZGluZyI+QWRkaXRpb25hbCBpbmZvcm1hdGlvbjwvaDI+CiAgCiAgCgoKICAKPGRsIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0LS10b3AtYm9yZGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS04Ij4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgQWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIE5vbmUKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKPC9kbD4KCiAgPGgyIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTUiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5Ta2lsbHMgYW5kIGV4cGVyaWVuY2U8L2gyPgogIAogIDxwIGNsYXNzPSJnb3Z1ay1ib2R5IGdvdnVrLSEtbWFyZ2luLXRvcC0zIj5CdXllcnMgd2lsbCB1c2UgdGhlIGVzc2VudGlhbCBhbmQgbmljZS10by1oYXZlIHNraWxscyBhbmQgZXhwZXJpZW5jZSB0byBoZWxwIHRoZW0gZXZhbHVhdGUgc3VwcGxpZXJz4oCZIHRlY2huaWNhbCBjb21wZXRlbmNlLjwvcD4KICAKICAKICAKCgogIAoKICAKPGRsIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0LS10b3AtYm9yZGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS04Ij4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgRXNzZW50aWFsIHNraWxscyBhbmQgZXhwZXJpZW5jZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIDx1bCBjbGFzcz0iZ292dWstbGlzdCBnb3Z1ay1saXN0LS1idWxsZXQiPgogICAgICAgICAgPGxpPkV4cGVyaWVuY2Ugb2YgRHJ1cGFsIDggd2Vic2l0ZSBkZXZlbG9wbWVudCBhbmQgbWFpbnRlbmFuY2UgZm9yIGNsaWVudHMgd2l0aCBib3RoIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIG9iamVjdGl2ZXMuPC9saT4KICAgICAgICAgIDxsaT5FeHBlcmllbmNlIG9mIGRlbGl2ZXJpbmcgZWNvbW1lcmNlIHNvbHV0aW9ucyBmb3IgYSBub3QtZm9yLXByb2ZpdCBvcmdhbmlzYXRpb24gd2l0aCBhIHJhbmdlIG9mIGRpZmZlcmVudCBwcm9kdWN0IHR5cGVzIChvbmxpbmUgZG9uYXRpb25zLCBtZW1iZXJzaGlwLCBldmVudHMgb3IgZXhwZXJpZW5jZSBib29raW5nLCByZXRhaWwpIHVzaW5nIGRpZmZlcmVudCB0ZWNobmljYWwgc29sdXRpb25zLjwvbGk+CiAgICAgICAgICA8bGk+RXhwZXJpZW5jZSBvZiBpbnRlZ3JhdGluZyB3ZWJzaXRlcyBhbmQgd2ViIGFwcGxpY2F0aW9ucyB3aXRoIGJ1c2luZXNzIHN5c3RlbXMgc3VjaCBhcyBDUk0sIEVtYWlsIGFuZCBQYXltZW50IEdhdGV3YXlzLjwvbGk+CiAgICAgICAgICA8bGk+eHBlcmllbmNlIG9mIGEgdXNlciByZXNlYXJjaC9kYXRhLWRyaXZlbiBhcHByb2FjaCB0byBkZXZlbG9wbWVudCwgaW5jbHVkaW5nIHVzZSBvZiBwcm90b3R5cGluZyBhbmQgcHJvb2Ygb2YgY29uY2VwdHMuPC9saT4KICAgICAgICAgIDxsaT5FeHBlcmllbmNlIG9mIHdvcmtpbmcgYWxvbmdzaWRlIGFkZGl0aW9uYWwgc3VwcGxpZXJzIGFuZCBpbi1ob3VzZSB0ZWFtcyB0byBkZWxpdmVyIGNvbXBsZXggdGVjaG5vbG9neSBjaGFuZ2UgcHJvamVjdHMuPC9saT4KICAgICAgICAgIDxsaT5FeHBlcmllbmNlIG9mIGRlbGl2ZXJpbmcgdmFsdWUgZm9yIG1vbmV5IGJ5IHdvcmtpbmcgaW4gcGFydG5lcnNoaXAgd2l0aCBjbGllbnRzIHRvIHNjb3BlIGFuZCBwcmlvcml0aXNlIGFnYWluc3QgYnVzaW5lc3MvdXNlciBuZWVkcy48L2xpPgogICAgICAgICAgPGxpPkV4cGVyaWVuY2Ugb2Ygd29ya2luZyB3aXRoIGFuIGluLWhvdXNlIElUIHRlYW0gb24gaG9zdGluZywgbW9uaXRvcmluZywgc2VjdXJpdHkgYW5kIEROUywgaW5jbHVkaW5nIHJlZ3VsYXIgdnVsbmVyYWJpbGl0eSBhbmQgcGVuZXRyYXRpb24gdGVzdHMsIGFjdGluZyBwcm9tcHRseSB0byBtaXRpZ2F0ZSBhbmQgcmVtZWRpYXRlIHNlY3VyaXR5IGlzc3Vlcy48L2xpPgogICAgICAgICAgPGxpPkFibGUgdG8gZGVtb25zdHJhdGUgcHJvYWN0aXZlIGFwcHJvYWNoIHRvIG1haW50ZW5hbmNlIGFuZCBtYW5hZ2luZyBDTVMgdXBkYXRlcyAoZS5nLiByZWd1bGFyIERydXBhbCBzZWN1cml0eSB1cGRhdGVzKTwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgTmljZS10by1oYXZlIHNraWxscyBhbmQgZXhwZXJpZW5jZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIDx1bCBjbGFzcz0iZ292dWstbGlzdCBnb3Z1ay1saXN0LS1idWxsZXQiPgogICAgICAgICAgPGxpPkV4cGVyaWVuY2Ugb2YgZGVsaXZlcmluZyBhbiBpbnRlZ3JhdGVkIGVjb21tZXJjZSBvZmZlciAoNSBwb2ludHMpPC9saT4KICAgICAgICAgIDxsaT5FeHBlcmllbmNlIG9mIHdvcmtpbmcgd2l0aCBhIG11bHRpc2l0ZSB2aXNpdG9yIGF0dHJhY3Rpb24gd2l0aCBhIHJldGFpbCBhbmQgbWVtYmVyc2hpcCBvZmZlciBhbG9uZ3NpZGUgZnVuZHJhaXNpbmcgYW1iaXRpb25zICg1IHBvaW50cyk8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgogIDxoMiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy02IiBjbGFzcz0iZ292dWstaGVhZGluZy1tIGFwcC1zdW1tYXJ5LWxpc3QtaGVhZGluZyI+SG93IHN1cHBsaWVycyB3aWxsIGJlIGV2YWx1YXRlZDwvaDI+CiAgCiAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMiPkFsbCBzdXBwbGllcnMgd2lsbCBiZSBhc2tlZCB0byBwcm92aWRlIGEgd3JpdHRlbiBwcm9wb3NhbC48L3A+CiAgCiAgCgoKICAKCiAgCgogIAoKICAKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBIb3cgbWFueSBzdXBwbGllcnMgdG8gZXZhbHVhdGUKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICA2CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFByb3Bvc2FsIGNyaXRlcmlhCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1saXN0IGdvdnVrLWxpc3QtLWJ1bGxldCI+CiAgICAgICAgICA8bGk+UHJvdmlkZSBhbiBvdmVydmlldyBvZiBzb21lIG9mIHRoZSBpbXByb3ZlbWVudCBvcHBvcnR1bml0aWVzIHlvdSBjYW4gaWRlbnRpZnkgdG8gaW5jcmVhc2Ugb25saW5lIHJldmVudWVzIGZvciBSQkcgS2V3LCBhbmQgc29tZSBvZiB0aGUgbGlrZWx5IGRlcGVuZGVuY2llcy9jaGFsbGVuZ2VzIG9mIHRoZSBwcm9qZWN0LiAoNTAgcG9pbnRzKTwvbGk+CiAgICAgICAgICA8bGk+UHJvdmlkZSBhbiBvdXRsaW5lIG9mIGFuIGVuZC10by1lbmQgZWNvbW1lcmNlIHByb2plY3QgeW91IGhhdmUgZGVsaXZlcmVkIGluY2x1ZGluZyBkZXRhaWxzIG9mIHRoZSBtZXRob2RvbG9neSwgdGVjaG5pY2FsIHNvbHV0aW9uLCBpbnRlZ3JhdGlvbnMsIGNoYWxsZW5nZXMgeW91IGZhY2VkLCBhbiBvdXRsaW5lIG9mIGJlbmVmaXQgcmVhbGlzYXRpb24uICg1MCBwb2ludHMpPC9saT4KICAgICAgICAgIDxsaT5EZXRhaWxzIG9mIHlvdXIgYXBwcm9hY2ggdG8gaWRlbnRpZnlpbmcgYSB0ZWNobmljYWwgc29sdXRpb24gKG9yIHN1aXRlKSB0byBkZWxpdmVyIG91ciBlY29tbWVyY2UgYW1iaXRpb25zIGFuZCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbmVlZCB0byBpbmZvcm0vdmFsaWRhdGUgYW4gb3B0aW9ucyBhcHByYWlzYWwgYW5kIHJlY29tbWVuZGF0aW9uICgyMCk8L2xpPgogICAgICAgICAgPGxpPkRldGFpbCB5b3VyIGFwcHJvYWNoIHRvIG9uZ29pbmcgbWFpbnRlbmFuY2Uvc3VwcG9ydCBvZiB3ZWJzaXRlcywgb3V0bGluaW5nIGhvdXJzIG9mIHNlcnZpY2UgYW5kIGhvdyBwcmlvcml0eSBpc3N1ZXMgYXJlIGRlYWx0IHdpdGgsIGluY2x1ZGluZyBhbiBleGFtcGxlIHdvcmsgd2l0aCBhbiBleGlzdGluZyBjbGllbnQuICgyMCBwb2ludHMpPC9saT4KICAgICAgICAgIDxsaT5EZXRhaWwgeW91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkaWZmZXJlbnQgYW5kIGNvbXBldGluZyBwcmlvcml0aWVzIChib3RoIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsKSB3ZSBmYWNlIGFzIGFuIG9yZ2FuaXNhdGlvbiAoMjAgcG9pbnRzKTwvbGk+CiAgICAgICAgICA8bGk+UHJvdmlkZSBhbiBleGFtcGxlIG9mIGhvdyB5b3UgaGF2ZSB3b3JrZWQgd2l0aCBhIGNsaWVudCBnb2luZyB0aHJvdWdoIGEgbGFyZ2Utc2NhbGUgZGlnaXRhbCB0cmFuc2Zvcm1hdGlvbiB0byBkZXRlcm1pbmUgYW5kIGRlbGl2ZXIgYWdhaW5zdCB0aGVpciBkaWdpdGFsIHJvYWRtYXAgKDIwIHBvaW50cyk8L2xpPgogICAgICAgICAgPGxpPlByb3ZpZGUgaW5mb3JtYXRpb24gb24gd2hhdCBtYWtlcyBhIHN1Y2Nlc3NmdWwgYWdlbmN5L2NsaWVudCBwYXJ0bmVyc2hpcCwgYW5kIGFuIGV4YW1wbGUgb2Ygd2hlcmUgeW91IGhhdmUgYWNoaWV2ZWQgdGhpcyAocGxlYXNlIGluY2x1ZGUgdGhpcyBjbGllbnQgYXMgb25lIG9mIHlvdXIgcmVmZXJlbmNlcykuICgyMCBwb2ludHMpPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBDdWx0dXJhbCBmaXQgY3JpdGVyaWEKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICA8dWwgY2xhc3M9ImdvdnVrLWxpc3QgZ292dWstbGlzdC0tYnVsbGV0Ij4KICAgICAgICAgIDxsaT5EZW1vbnN0cmF0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkaWZmZXJlbnQgYW5kIGNvbXBldGluZyBwcmlvcml0aWVzIChib3RoIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsKSBmYWNlZCBieSBjb21wbGV4IG5vbi1wcm9maXQgb3JnYW5pc2F0aW9ucyAoMjAgcG9pbnRzKTwvbGk+CiAgICAgICAgICA8bGk+RGVtb25zdHJhdGUgYW4gZXZpZGVuY2UtZHJpdmVuIGFwcHJvYWNoIHdpdGggYW4gZXhhbXBsZSBvZiB3aGVyZSB5b3UgaGF2ZSB1c2VkIGFuYWx5dGljcyBvciB1c2VyIHJlc2VhcmNoIHRvIGluZmx1ZW5jZSBvdXRjb21lcyAoMjAgcG9pbnRzKTwvbGk+CiAgICAgICAgICA8bGk+UHJvdmlkZSBhbiBleGFtcGxlIG9mIHdoZXJlIHlvdSBoYXZlIHdvcmtlZCB3aXRoIGluLWhvdXNlIGRldmVsb3BtZW50IGFuZCBJVCByZXNvdXJjZXMgdG8gZGVsaXZlciBvbiBhIHByb2plY3QgKDIwIHBvaW50cyk8L2xpPgogICAgICAgICAgPGxpPlByb3ZpZGUgZXZpZGVuY2Ugb2Ygc3VwcG9ydGluZyBhbiBpbi1ob3VzZSBkaWdpdGFsIHRlYW0gd2l0aCBzdGFrZWhvbGRlciBlbmdhZ2VtZW50IHRvIGRlbGl2ZXIgc29sdXRpb25zIHRoYXQgbWVldCBib3RoIHVzZXIgYW5kIGJ1c2luZXNzIG5lZWRzICgxNSBwb2ludHM8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFBheW1lbnQgYXBwcm9hY2gKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBDYXBwZWQgdGltZSBhbmQgbWF0ZXJpYWxzCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEFkZGl0aW9uYWwgYXNzZXNzbWVudCBtZXRob2RzCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1saXN0IGdvdnVrLWxpc3QtLWJ1bGxldCI+CiAgICAgICAgICA8bGk+UmVmZXJlbmNlPC9saT4KICAgICAgICAgIDxsaT5QcmVzZW50YXRpb248L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEV2YWx1YXRpb24gd2VpZ2h0aW5nCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTAgZ292dWstIS1tYXJnaW4tYm90dG9tLTEiPlRlY2huaWNhbCBjb21wZXRlbmNlPC9wPgogICAgICAgIDxkaXY+NjAlPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMgZ292dWstIS1tYXJnaW4tYm90dG9tLTEiPkN1bHR1cmFsIGZpdDwvcD4KICAgICAgICA8ZGl2PjIwJTwvZGl2PgogICAgICAgIDxwIGNsYXNzPSJnb3Z1ay1ib2R5IGdvdnVrLSEtbWFyZ2luLXRvcC0zIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0xIj5QcmljZTwvcD4KICAgICAgICA8ZGl2PjIwJTwvZGl2PgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAo8L2RsPgoKICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtcm93Ij4KICA8ZGl2IGNsYXNzPSJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIj4KICAgIAoKCgo8aDIgaWQ9ImNsYXJpZmljYXRpb24tcXVlc3Rpb25zIiBjbGFzcz0iZ292dWstaGVhZGluZy1tIGFwcC1zdW1tYXJ5LWxpc3QtaGVhZGluZyI+UXVlc3Rpb25zIGFza2VkIGJ5IHN1cHBsaWVyczwvaDI+CgoKCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxLiBJbiB0aGUgZXNzZW50aWFsIHNraWxscyBpdCBsaXN0IHRoYXQgJiMzNDsgRXhwZXJpZW5jZSBvZiBEcnVwYWwgOCB3ZWJzaXRlIGRldmVsb3BtZW50JiMzNDsgaXMgcmVxdWlyZWQgYnV0IGluIHRoZSBkZXNjcmlwdGlvbiBhbHNvIHNheXMgdGhhdCB5b3UgYXJlIG9wZW4gdG8gb3RoZXIgRWNvbW1lcmNlIHRlY2hub2xvZ2llcy4gSWYgYSBzdXBwbGllciB3b3VsZCBsaWtlIHRvIGltcGxlbWVudCBhIGRpZmZlcmVudCBDTVMvZWNvbW1lcmNlIHNvbHV0aW9uIHdvdWxkIHRoZXkgc3RpbGwgbmVlZCBEcnVwYWwgOCBleHBlcmllbmNlPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIERydXBhbCA4IGlzIHRoZSBDTVMgZm9yIGtldy5vcmcsIHdoaWNoIHdhcyByZWJ1aWx0IGFuZCBsYXVuY2hlZCBpbiBNYXJjaCAyMDE5LiBXZSBhcmUgY3VycmVudGx5IG5vdCBsb29raW5nIHRvIGNoYW5nZSB0aGF0IENNUyB1bmRlciB0aGlzIHRlbmRlci4gPGJyPjxicj5BcyBwYXJ0IG9mIGFueSBmdXR1cmUgZGV2ZWxvcG1lbnQgYXJvdW5kIG91ciBlLWNvbW1lcmNlIG9mZmVyLCB3ZSB3b3VsZCBhc3Nlc3MgcG90ZW50aWFsIHBsYXRmb3JtcyB3aXRoIHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIuIDxicj48YnI+SG93ZXZlciwgZ2l2ZW4gd2UgY3VycmVudGx5IHVzZSBEcnVwYWwgOCwgd2UgZG8gcmVxdWlyZSBleHBlcnRpc2UgaW4gc3VwcG9ydGluZyBhbmQgZnVydGhlciBkZXZlbG9waW5nIG91ciBEcnVwYWwgOCBDTVMgYXMgYSBwcmlvcml0eSB1bmRlciB0aGlzIHRlbmRlcgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAyLiBDb3VsZCB5b3UgcGxlYXNlIGNvbmZpcm0gd2hldGhlciBkZW1vbnN0cmF0aW5nIGV4cGVyaWVuY2UgYnVpbGRpbmcgY29tcGxleCBlLWNvbW1lcmNlIHN5c3RlbXMgdXNpbmcgYSByYW5nZSBvZiBQSFAgcGxhdGZvcm1zIHRoYXQgYXJlIE5PVCBEcnVwYWwgOCB3b3VsZCBiZSBhbiBhY2NlcHRhYmxlIHJlc3BvbnNlPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFllcywgd2Ugd2lsbCBjb25zaWRlciB0aGUgdXNlIG9mIG90aGVyIHBsYXRmb3JtcyBhbmQgdGVjaG5vbG9naWVzIGZvciBhbnkgZnV0dXJlIGRldmVsb3BtZW50IGFyb3VuZCBvdXIgZS1jb21tZXJjZSBvZmZlci4gPGJyPjxicj5Ib3dldmVyLCBEcnVwYWwgOCBpcyB0aGUgQ01TIGZvciBrZXcub3JnLCB3aGljaCB3ZSByZXF1aXJlIGV4cGVydGlzZSBpbiBzdXBwb3J0aW5nIGFuZCBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIGFzIHBhcnQgb2YgdGhpcyB0ZW5kZXIuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDMuIFdlIGRvbiYjMzk7dCBoYXZlIHNwZWNpZmljIERydXBhbCA4IGV4cGVyaWVuY2UgYnV0IHdvcmsgd2l0aCBvdGhlciBsYXJnZS1zY2FsZSBQSFAtYmFzZWQgY29udGVudCBtYW5hZ2VtZW50IHN5c3RlbXMuIDxicj48YnI+T3VyIHRlYW0gd291bGQgYmUgbW9yZSB0aGFuIGNhcGFibGUgb2YgcHJvdmlkaW5nIHN1cHBvcnQgYW5kIG1haW50YWluaW5nIHRoZSBleGlzdGluZyBzeXN0ZW0uIDxicj48YnI+RG9lcyB0aGlzIGV4Y2x1ZGUgdXMgZnJvbSB0aGUgcHJvcG9zYWwgc3RhZ2U/IFdlIGFyZSBjYXBhYmxlIG9mIGRlbW9uc3RyYXRpbmcgZXhwZXJpZW5jZSBpbiBhbGwgb3RoZXIgYXJlYXMKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBXZSB3b3VsZCBwbGFjZSBwcmVmZXJlbmNlIG9uIHN1cHBsaWVyIHdobyBoYXZlIGV4cGVyaWVuY2Ugb2Ygc3VwcG9ydGluZyBhbmQgZGV2ZWxvcGluZyBmb3IgRHJ1cGFsIDguIDxicj48YnI+VGhlIHN1cHBsaWVyIG11c3QgYmUgYWJsZSB0byBkZXZlbG9wIGZvciBEcnVwYWwgOCwgbm90IGp1c3Qgc3VwcG9ydCB0aGUgc3lzdGVtCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDQuIFdobyBpcyB0aGUgZXhpc3Rpbmcgc3VwcGxpZXI/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgT3VyIGN1cnJlbnQgc3VwcGxpZXIgaXMgTWFuaWZlc3RvLCBwYXJ0IG9mIHRoZSBQYW5vcGx5IGdyb3VwLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICA1LiBJdCBzb3VuZHMgbGlrZSBpdOKAmXMgb25seSB0aGUgRHJ1cGFsIENvbW1lcmNlIGNvbXBvbmVudCB0aGF0IHlvdSBhcmUgY29uc2lkZXJpbmcgcmVwbGFjaW5nLCBub3QgRHJ1cGFsIENNUy4gQ2FuIHlvdSBjb25maXJtIHRoaXMgaXMgY29ycmVjdCBvciBpZiB5b3UgYXJlIG9wZW4gdG8gYSBuZXcgQ01TPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIE92ZXIgdGhlIGNvbWluZyA2LTI0IG1vbnRocywgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZS1jb21tZXJjZSBwcm9qZWN0IHRoYXQgd2lsbCBlaXRoZXIgYmUgYSBwYXJ0IG9mIG91ciBEcnVwYWwgOCBkZXZlbG9wbWVudCBvciBob3VzZWQgb24gdGhlaXIgb3duIHBsYXRmb3JtLjxicj48YnI+V2UgYXJlIG5vdCBjb21taXR0ZWQgdG8gY3JlYXRpbmcgYW55IG5ldyBwbGF0Zm9ybShzKSB1bmxlc3MgaXTigJlzIGRlZW1lZCBhcHByb3ByaWF0ZSB3aXRoIHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIsIGVuc3VyaW5nIHRoYXQgdGhleSBtZWV0IHRoZSByZXF1aXJlbWVudHMgZm9yIGRldmVsb3BpbmcgdGhlIHNjb3BlZCBwbGF0Zm9ybShzKS48YnI+PGJyPldlIGFyZSBvcGVuIHRvIGRpc2N1c3NpbmcgcGxhdGZvcm1zIGZvciBhbnkgZnV0dXJlIGRldmVsb3BtZW50IG9mIG91ciBlLWNvbW1lcmNlIG9mZmVyIGFuZCBpdCBtYXkgYmUgdGhhdCB3ZSBwdWJsaXNoIGEgc2VwYXJhdGUgdGVuZGVyIGZvciB3b3JrIHRvIGNyZWF0ZSBhIG5ldyBlLWNvbW1lcmNlIHBsYXRmb3JtKHMpIGF0IGEgbGF0ZXIgZGF0ZSB0byBhcHBvaW50IGEgc2VwYXJhdGUgc3VwcGxpZXIgdG8gdGhpcyBjb250cmFjdC4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgNi4gVGhlIGRlYWRsaW5lIGZvciBhc2tpbmcgcXVlc3Rpb25zIGlzIDcgTm92ZW1iZXIsIGJ1dCBpbiB0aGUgUSZhbXA7QSBzZXNzaW9uIGRldGFpbHMgeW91IHNheSAmIzM0O1dlIHdpbGwgcG9zdCByZXNwb25zZXMgdG8gYWxsIHF1ZXN0aW9ucyByZWNlaXZlZCBvbmxpbmUgYnkgdGhlIDEzdGggTm92ZW1iZXImIzM0Oy4gPGJyPjxicj5XZSBjYW4gb25seSBhc3N1bWUgdGhpcyBpcyBhbiBlcnJvciwgYXMgdGhlIGNsb3NpbmcgZGF0ZSBmb3IgYXBwbGljYXRpb25zIGlzIHRoZSAxNHRoIE5vdmVtYmVyCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgVGhlIERpZ2l0YWwgTWFya2V0cGxhY2UgcHJlc2NyaWJlZCB0aW1lbGluZXMgcmVxdWlyZSBhbGwgcmVzcG9uc2VzIHRvIGJlIHB1Ymxpc2hlZCBieSAxM3RoIG9mIE5vdmVtYmVyIGF0IHRoZSBsYXRlc3QuPGJyPjxicj5XZSB3aWxsIG9mIGNvdXJzZSBlbmRlYXZvdXIgdG8gcHVibGlzaCBhbnN3ZXJzIHRvIGFsbCBxdWVzdGlvbnMgcmVjZWl2ZWQgYnkgdGhlIGRlYWRsaW5lIGFzIHNvb24gYXMgcG9zc2libGUKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgNy4gUGxlYXNlIGNvbmZpcm0gd2hldGhlciB5b3Ugd291bGQgY29uc2lkZXIgYSBzdXBwbGllciBpZiB0aGV5IGhhdmUgYm90aCBlY29tbWVyY2UgZXhwZXJpZW5jZSBhbmQgbm90LWZvci1wcm9maXQgZXhwZXJpZW5jZSBidXQgaGF2ZW4mIzM5O3QgcHJldmlvdXNseSBkb25lIGEgcHJvamVjdCB0aGF0IGNvbWJpbmVzIGJvdGggZWNvbW1lcmNlIGFuZCBub3QtZm9yLXByb2ZpdCBpbiB0aGUgc2FtZSBwcm9qZWN0IG9yIGZvciB0aGUgc2FtZSBjbGllbnQ/IE9yIHdvdWxkIHlvdSBydWxlIG91dCBhIHN1cHBsaWVyIGJhc2VkIG9uIHRoYXQ/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgWWVzLCB3ZSBhcmUgb3BlbiB0byB3b3JraW5nIHdpdGggYSBzdXBwbGllciB3aXRoIGV4cGVyaWVuY2UgaW4gZWFjaCBhcmVhLCBidXQgdGhhdCBkb2VzbuKAmXQgbmVjZXNzYXJpbHkgaGF2ZSBhIHNpbmdsZSBwcm9qZWN0IG9yIHNpbmdsZSBjbGllbnQgdG8gcHJvdmlkZSBldmlkZW5jZSBvZiBvciByZWZlcmVuY2VzIGZvci4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgOC4gRG8geW91IGhhdmUgYW55IGRvY3VtZW50YXRpb24gYXJvdW5kIGV4aXN0aW5nIGtleSB1c2VyIGpvdXJuZXlzIGFuZC9vciBpZGVhbCBzdGF0ZSBqb3VybmV5cyBhcyBvZiB5ZXQ/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgRm9yIHRoaXMgdGVuZGVyLCB3ZSB3b3VsZCBleHBlY3QgdG8gd29yayB3aXRoIHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIgdG8gbWFwIG91ciBrZXkgdXNlciBqb3VybmV5cyBmb3IgdGhlIHJlbGV2YW50IHN0YXRlbWVudHMgb2Ygd29yayB0aGF0IHdpbGwgYmUgY2FycmllZCBvdXQuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDkuIERvIHlvdSBhbHJlYWR5IGhhdmUgbWFwcGVkIG91dCB1c2VyIHBlcnNvbmFzIGFuZC9vciBhbnkgZGV0YWlsIG9uIGF1ZGllbmNlIC8gdXNlciBzZWdtZW50YXRpb24/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2UgYXJlIGN1cnJlbnRseSB1bmRlcmdvaW5nIGEgcmV2aWV3IG9mIG91ciB1c2UgYW5kIHN0cnVjdHVyZSBvZiBhdWRpZW5jZSBwZXJzb25hcyBhbmQgc2VnbWVudGF0aW9uLiBUaGlzIHdvcmsgaXMgbGlrZWx5IHRvIGJlIGNhcnJpZWQgb3V0IGluIFExIDIwMjAvMjEuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDEwLiBQbGVhc2UgY291bGQgeW91IHNoYXJlIGZ1cnRoZXIgZGV0YWlsIChldmVuIGlmIG9ubHkgdGhlIG5hbWUgb2YpIHJlIHlvdXIgZXhpc3RpbmcgcmV0YWlsIHBsYXRmb3JtcywgQ1JNIHN5c3RlbSwgZW1haWwgc3lzdGVtLCBwYXltZW50IHRlY2hub2xvZ3kgYW5kIGFueSBvdGhlciBrZXkgaW50ZWdyYXRpb24gcG9pbnRzPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZSB2YXJpb3VzIHN5c3RlbXMgaW4gb3VyIGRpZ2l0YWwgZXN0YXRlLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgRHJ1cGFsIDggYXMgdGhlIENNUyBmb3Iga2V3Lm9yZywgYXJlIHN1YmplY3QgdG8gY2hhbmdlIGluIHRoZSBjb21pbmcgZmluYW5jaWFsIHllYXIuIDxicj48YnI+QmVjYXVzZSBvZiB0aGlzLCB3ZSB3b3VsZCBsaWtlIHJlc3BvbnNlcyBub3QgdG8gZm9jdXMgb24gdGhlIGV4aXN0aW5nIG9yIHBvdGVudGlhbCBzeXN0ZW1zLCBhcyB0aGlzIHdpbGwgYmUgYWdyZWVkIGJldHdlZW4gS2V3IGFuZCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDExLiBZb3Ugbm90ZSB0aGUgZGVzaXJlIHRvIGltcHJvdmUgdXBzZWxsIG9mIG1lbWJlcnNoaXBzLCBlbmNvdXJhZ2UgZG9uYXRpb25zIGFuZCBpbmNyZWFzZSBvbmxpbmUgcmV0YWlsIGNhcGFiaWxpdGllczogY2FuIHlvdSBzaGFyZSBhbnl0aGluZyBmdXJ0aGVyIGFib3V0IHRoZSB3aWRlciBvcmdhbmlzYXRpb25hbCBnb2FscyBhbmQgY2hhbGxlbmdlcyBhbmQgdGhlIGJhbGFuY2UgaW4gcHJpb3JpdHkgKGlmIGFueSkgb2YgeW91ciB2YXJ5aW5nIGdvYWxzPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIGNyb3NzLW9yZ2FuaXNhdGlvbiBwcm9ncmFtbWUgdG8gZGVmaW5lIHRoZSBidXNpbmVzcyBhbmQgdXNlciBuZWVkcyBhcm91bmQgaW1wcm92aW5nIHRoZSBlLWNvbW1lcmNlIG9mZmVyIChpbmNsdWRpbmcgcmV0YWlsLCBtZW1iZXJzaGlwLCBhbmQgZnVuZHJhaXNpbmcpLiBUaGUgb3V0Y29tZSBvZiB0aGlzIHByb2dyYW1tZSB3aWxsIHByb2R1Y2UgdGhlIHJvYWRtYXAgZm9yIGltcHJvdmluZyB0aGUgb2ZmZXIsIHdoaWNoIHdpbGwgdGhlbiBiZSBkZXZlbG9wZWQgaW50byBzdGF0ZW1lbnRzIG9mIHdvcmsgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxMi4gSXQgc291bmRzIGxpa2UgaXTigJlzIG9ubHkgdGhlIERydXBhbCBDb21tZXJjZSBjb21wb25lbnQgdGhhdCB5b3UgYXJlIGNvbnNpZGVyaW5nIHJlcGxhY2luZywgbm90IERydXBhbCBDTVMuIENhbiB5b3UgY29uZmlybSB0aGlzIGlzIGNvcnJlY3Qgb3IgaWYgeW91IGFyZSBvcGVuIHRvIGEgbmV3IENNUz8KICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBEcnVwYWwgOCBpcyB0aGUgQ01TIGZvciBrZXcub3JnLCB3aGljaCB3YXMgcmVidWlsdCBhbmQgbGF1bmNoZWQgaW4gTWFyY2ggMjAxOS4gV2UgYXJlIGN1cnJlbnRseSBub3QgbG9va2luZyB0byBjaGFuZ2UgdGhhdCBDTVMgdW5kZXIgdGhpcyB0ZW5kZXIuIDxicj48YnI+QXMgcGFydCBvZiBhbnkgZnV0dXJlIGRldmVsb3BtZW50IGFyb3VuZCBvdXIgZS1jb21tZXJjZSBvZmZlciwgd2Ugd291bGQgYXNzZXNzIHBvdGVudGlhbCBwbGF0Zm9ybXMgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLiA8YnI+PGJyPkhvd2V2ZXIsIGdpdmVuIHdlIGN1cnJlbnRseSB1c2UgRHJ1cGFsIDgsIHdlIGRvIHJlcXVpcmUgZXhwZXJ0aXNlIGluIHN1cHBvcnRpbmcgYW5kIGZ1cnRoZXIgZGV2ZWxvcGluZyBvdXIgRHJ1cGFsIDggQ01TIGFzIGEgcHJpb3JpdHkgdW5kZXIgdGhpcyB0ZW5kZXIKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgMTMuIERvIHlvdSBoYXZlIGFuIGV4aXN0aW5nIHN0ZWVyaW5nIGNvbW1pdHRlZSBpbiBwbGFjZSB0aGF0IGlzIGludmVzdGVkIGluIHlvdXIgZGlnaXRhbCB0cmFuc2Zvcm1hdGlvbiBwcm9ncmFtbWUgb3Igd291bGQgdGhpcyBiZSBzb21ldGhpbmcgeW914oCZZCBiZSBsb29raW5nIHRvIHB1dCBpbiBwbGFjZSBnb2luZyBmb3J3YXJkPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGNyb3NzLW9yZ2FuaXNhdGlvbiBncm91cHMgdGhhdCB3aWxsIGlucHV0IGludG8gdGhlIHJvYWRtYXAgb2Ygb3VyIGRpZ2l0YWwgb2ZmZXI7IG9uZSBvZiB3aGljaCBpcyBmb2N1c3NlZCBvbiBkZXZlbG9waW5nIG91ciB2aXNpdG9yIHVzZXIgam91cm5leXMgYWNyb3NzIG91ciBlLWNvbW1lcmNlIG9mZmVyLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxNC4gV2hhdCBpcyB0aGUgdGltZWxpbmUgZm9yIHByb3Bvc2FscyBvbmNlIHNpeCBzdXBwbGllcnMgaGF2ZSBiZWVuIHNob3J0bGlzdGVkIGZvciBldmFsdWF0aW9uPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIGludGVuZCB0byBpbnZpdGUgc2hvcnRsaXN0ZWQgc3VwcGxpZXJzIHRvIHByZXNlbnQgYXQgUkJHIEtldyBvbiB0aGUgYWZ0ZXJub29ucyBvZiB0aGUgMjd0aCBhbmQgMjh0aCBOb3ZlbWJlciwgYW5kIHRvIGhhdmUgYSBDb250cmFjdCBpbiBwbGFjZSBieSBtaWQtRGVjZW1iZXIuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDE1LiBXaGF0IGludGVybmFsIGRldmVsb3BtZW50ICZhbXA7IGRlc2lnbiByZXNvdXJjZXMgd291bGQgd2UgYmUgd29ya2luZyB3aXRoPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIGN1cnJlbnRseSBoYXZlIGFuIGludGVybmFsIFVJIGRlc2lnbmVyLCB3aXRoaW4gS2V34oCZcyBEaWdpdGFsIEV4cGVyaWVuY2UgdGVhbSwgd2hvIHdvdWxkIGRldmVsb3AgdGhlIGZyb250LWVuZCBkZXNpZ25zIGZvciBhbGwsIG9yIG1vc3QsIG9mIG91ciBvbmxpbmUgcHJlc2VuY2UuPGJyPjxicj5JbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgZGVzaWduIHJlc291cmNlLCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyIHdpbGwgYmUgd29ya2luZyBwcmltYXJpbHkgd2l0aCBLZXcmIzM5O3MgRGlnaXRhbCBFeHBlcmllbmNlIHRlYW0sIGFuZCBwcmltYXJpbHkgd2l0aCB0aGUgSGVhZCBvZiBEaWdpdGFsIEV4cGVyaWVuY2UsIFNlbmlvciBQcm9kdWN0IE1hbmFnZXIsIFByb2R1Y3QgTWFuYWdlciwgSnVuaW9yIFByb2R1Y3QgTWFuYWdlciwgVUkgRGVzaWduZXIsIFNlbmlvciBDb250ZW50IE1hbmFnZXIgYW5kIENvbnRlbnQgUHJvZHVjZXJzLiA8YnI+PGJyPldoZXJlIHJlbGV2YW50IHlvdSYjMzk7bGwgYWxzbyB3b3JrIHdpdGggc3Rha2Vob2xkZXJzIGluIG90aGVyIHRlYW1zIGFjcm9zcyBLZXcsIGZvciBleGFtcGxlIG91ciBEaWdpdGFsIENvbW1lcmNpYWwgTWFuYWdlciBmb3IgRUNvbW1lcmNlLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxNi4gQXJlIHlvdSBsb29raW5nIGZvciByZXNvdXJjZXMgdG8gYmUgcGx1Z2dlZCBpbnRvIHlvdXIgdGVhbSBhbmQgbWFuYWdlZCBieSB5b3VyIHByb2plY3QgbWFuYWdlciwgb3IgYXJlIHlvdSBsb29raW5nIGZvciBhIHNlbGYtbWFuYWdpbmcgdGVhbSB0byB3b3JrIHRvIGEgZml4ZWQgc2NvcGU/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2Ugd291bGQgbGlrZSB0byB3b3JrIGNvbGxhYm9yYXRpdmVseSB3aXRoIHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIsIGluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiBzdGF0ZW1lbnRzIG9mIHdvcmsgd2l0aGluIHRoaXMgY29udHJhY3QuIDxicj48YnI+V2Ugd291bGQgZXhwZWN0IHRoZSBhcHBvaW50ZWQgc3VwcGxpZXIgdG8gbWFuYWdlIHRoZWlyIG93biByZXNvdXJjZXMgaW4gb3JkZXIgdG8gZGVsaXZlciBhZ2FpbnN0IGFncmVlZCBzdGF0ZW1lbnRzIG9mIHdvcmsgdG8gYWdyZWVkIHRpbWVsaW5lcwogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxNy4gV2hhdCBob3N0aW5nIGFuZCBzdXBwb3J0IGxldmVscyAoU0xBKSBkbyB5b3UgY3VycmVudGx5IGhhdmUgaW4gcGxhY2U/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgT3VyIGhvc3RpbmcgY29udHJhY3QgaXMgbWFuYWdlZCBzZXBhcmF0ZWx5IHRvIHRoaXMgdGVuZGVyLiBUaGUgY3VycmVudCBzdXBwbGllciBpcyBBY3F1aWEuPGJyPjxicj5XZSBjdXJyZW50bHkgaGF2ZSBhbiBhZ3JlZWQgc3RhdGVtZW50IG9mIHdvcmsgZm9yIHN1cHBvcnQgd2l0aCBvdXIgY3VycmVudCBzdXBwbGllciwgd2hpY2ggY292ZXJzIGFncmVlbWVudCBvbiByZXNwb25zZSB0aW1pbmdzIGFjcm9zcyBjcml0aWNhbCwgaGlnaCwgbm9ybWFsLCBhbmQgbG93IHByaW9yaXRpZXMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDE4LiBXaGF0IG90aGVyIGFkZGl0aW9uYWwgc3VwcGxpZXJzIHdvdWxkIHdlIGJlIGV4cGVjdGVkIHRvIHdvcmsgYWxvbmdzaWRlIGZvciB0aGlzIGJyaWVmPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZSBhZGRpdGlvbmFsIHN1cHBsaWVycyB3b3VsZCBiZSBkZXBlbmRlbnQgb24gdGhlIHN0YXRlbWVudHMgb2Ygd29yayBhZ3JlZWQgdG8gd2l0aGluIHRoaXMgY29udHJhY3QuPGJyPjxicj5UaGUgY3VycmVudCBrbm93biBhZGRpdGlvbmFsIHN1cHBsaWVyIGlzIEFjcXVpYSwgd2hvIGhvc3Qga2V3Lm9yZwogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAxOS4gT3ZlcmFsbCwgaG93IGRvIHlvdSBzZWUgdGhlIGJ1ZGdldC9lZmZvcnQgc3BsaXQgYmV0d2VlbiBlLWNvbW1lcmNlIHVwZ3JhZGUsIG9uZ29pbmcgc2l0ZSBtYWludGVuYW5jZSwgYW5kIG5ldyBwcm9kdWN0IGRldmVsb3BtZW50PwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIHdvdWxkIGV4cGVjdCB0byBkZWZpbmUgaW5kaXZpZHVhbCBidWRnZXRzIGZvciBzdGF0ZW1lbnRzIG9mIHdvcmsgd2l0aGluIHRoaXMgY29udHJhY3Qgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyLCB3aGljaCB3aWxsIGJlIGRyaXZlbiBieSB0aGUga2V5IHByaW9yaXRpZXMgYXQgdGhhdCB0aW1lLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAyMC4gQ2FuIHlvdSBwcm92aWRlIGluZm9ybWF0aW9uIGFueSBpbmZvcm1hdGlvbiBvbiBjdXJyZW50IFByb29mIG9mIGNvbmNlcHRzIG9yIGFscGhhIHByb2dyYW1tZXMgbG9va2luZyB0byB1dGlsaXNlIHRlY2hub2xvZ3kgdG8gZW5oYW5jZSB2aXNpdG9yIGV4cGVyaWVuY2UgdG8gS2V3LCBXYWtlaHVyc3Qgb3IgYW55IG90aGVyIHNpdGVzPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIGFyZSBjdXJyZW50bHkgbm90IGluIGEgcG9zaXRpb24gdG8gc2hhcmUgYW55IGluZm9ybWF0aW9uIGFyb3VuZCB0aGlzLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAyMS4gQ2FuIHlvdSBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGFueSBtYXJrZXRpbmcgc3RyYXRlZ2llczsgZGlnaXRhbCBvciB0aHJvdWdoIGFueSBvdGhlciBjaGFubmVscz8KICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBUaGVyZSBpcyBhbiBhZ3JlZWQgY3Jvc3Mtb3JnYW5pc2F0aW9uIHJvYWRtYXAgZm9yIEtld+KAmXMgZGlnaXRhbCBvZmZlciB3aGljaCB3ZSB3aWxsIHNoYXJlIHdpdGggdGhlIGFwcG9pbnRlZCBzdXBwbGllci4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgMjIuIFBsZWFzZSBjYW4geW91IHN1cHBseSBjdXJyZW50IHZvbHVtZXRyaWNzIGZvciB0aGUgY3VycmVudCBvbmxpbmUgYW5kIFdpRmkgdmlzaXRvciBleHBlcmllbmNlIGluIHRoZSBkaWZmZXJlbnQgbG9jYXRpb25zCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2UgZXN0aW1hdGUgdGhhdCBvdXIgcGh5c2ljYWwgdmlzaXRvciBudW1iZXJzIGluIDIwMTkgd2lsbCBiZSBhcm91bmQgMiBtaWxsaW9uLiA8YnI+PGJyPldlIGFyZSBub3QgaW4gYSBwb3NpdGlvbiB0byBzaGFyZSBkYXRlIG9uIHRoZSBhbm51YWwgbnVtYmVyIG9mIHZpc2l0cyB0byBvdXIgdmFyaW91cyBvbmxpbmUgcGxhdGZvcm1zLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICAyMy4gUmVmZXJlbmNlIGlzIG1hZGUgdGhhdCB5b3UgYXJlIGxvb2tpbmcgZm9yIGEgJiMzNDtwYXJ0bmVyIGFnZW5jeSYjMzQ7LiBQbGVhc2UgY2FuIHlvdSBjbGFyaWZ5IHRoYXQgdGhpcyAmIzM0O2FnZW5jeSAmIzM0OyBpcyBhIHN0cmF0ZWdpYyBwYXJ0bmVyPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlIGFyZSBsb29raW5nIGZvciBhbiBhZ2VuY3kgdG8gd29yayBjb2xsYWJvcmF0aXZlbHkgd2l0aCBLZXcsIHRvIGRldmVsb3AgYW5kIGltcHJvdmUgb3VyIGRpZ2l0YWwgb2ZmZXIuIDxicj48YnI+VGhlIGFnZW5jeSBzaG91bGQgYmUgYWJsZSB0byBkZW1vbnN0cmF0ZSB0aGVpciBhYmlsaXR5IHRvIGRldmVsb3AgYW5kIG1haW50YWluIERydXBhbCA4LCB3aGlsc3QgZXZpZGVuY2luZyBzdHJhdGVnaWMgc3VwcG9ydCBmb3IgYm90aCBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCBvYmplY3RpdmVzCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDI0LiBJcyBEcnVwYWwgYmVpbmcgdXNlZCBmb3IgdGhlIGxlYXJuaW5nIHBsYXRmb3JtcyBhbHNvPwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIE91ciBjdXJyZW50bHkgbGVhcm5pbmcgcGxhdGZvcm0gdXNlcyBhIHNlcGFyYXRlIExNUyB0byBvdXIgRHJ1cGFsIDggQ01TIGZvciBrZXcub3JnLiA8YnI+PGJyPkhvd2V2ZXIsIHRoZSBvbmxpbmUgbGVhcm5pbmcgb2ZmZXIgaXMgY3VycmVudGx5IHVuZGVyIHJldmlldyBhbmQgd2Ugd291bGQgaG9wZSB0byBhZGRyZXNzIHRoaXMgd2l0aCB0aGUgYXBwb2ludGVkIHN1cHBsaWVyIGFzIGEgc3RhdGVtZW50IG9mIHdvcmsgdW5kZXIgdGhpcyBjb250cmFjdC4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgMjUuIFVuZGVyIHRoZSBQcm9ibGVtIHRvIGJlIHNvbHZlZCBzZWN0aW9uLCBpdCBtZW50aW9ucyB0aGF0IHRoZSB3ZWJzaXRlIERydXBhbCA4LiBDYW4geW91IHN1cHBseSBhbnkgYXJjaGl0ZWN0dXJhbCBpbmZvcm1hdGlvbiBvZiB0aGUgdGVjaG5vbG9naWVzIGludGVncmF0ZWQgd2l0aGluIGtldy5vcmcgYW5kIHRoZSBlQ29tbWVyY2UsIHBheW1lbnQgZ2F0ZXdheXMgYW5kIENSTT8KICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBDdXJyZW50bHkgdGhlIHNvbGUgaW50ZWdyYXRpb24gd2l0aGluIGtldy5vcmcgaXMgd2l0aCBvdXIgZW1haWwgbWFya2V0aW5nIHNlcnZpY2UsIERvdGRpZ2l0YWwuIDxicj48YnI+V2Ugd291bGQgaG9wZSB0byBpbnRlZ3JhdGUgb3RoZXIgc3lzdGVtcyAodG8gYmUgZGVmaW5lZCkgaW50byBrZXcub3JnIHVuZGVyIHRoaXMgY29udHJhY3QuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDI2LiBSZWdhcmRpbmcgdGhlIHdlYnNpdGUgKHdoeSBzaW5ndWxhcj8gRG8geW91IG1lYW4ganVzdCBrZXcub3JnPykgeW91IHNheSDigJxPdXIgd2Vic2l0ZSBpcyBidWlsdCBvbiBEcnVwYWwgOCDigJMgYW5kIHdlIGFyZSBvcGVuLW1pbmRlZCBhYm91dCB3aGF0IGVjb21tZXJjZSB0ZWNobm9sb2d5IHdlIHVzZSB0byBidWlsZCBvdXQgb3VyIG9mZmVyICh3ZSBjdXJyZW50bHkgdXNlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBzb2x1dGlvbnMp4oCdLiBDYW4gd2Uga25vdyB3aGF0IGtpbmQgb2YgZGlmZmVyZW50IHNvbHV0aW9ucy90ZWNobm9sb2dpZXMgYXJlIHlvdSByZWZlcnJpbmcgdG8/CiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgVGhpcyB0ZW5kZXIgaXMgcHJlZG9taW5hdGVseSBmb2N1c2VkIG9uIHRoZSBkZXZlbG9wbWVudCBhbmQgbWFpbnRlbmFuY2Ugb2Ygb3VyIGtldy5vcmcgd2Vic2l0ZSwgYnV0IHdlIGhhdmUgbnVtZXJvdXMgb3RoZXIgd2Vic2l0ZXMvcGxhdGZvcm1zIHRoYXQgbWF5IGJlIHdvcmtlZCB1cG9uIHVuZGVyIHRoaXMgY29udHJhY3QuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIDI3LiBXaGF0IGRvIHlvdSBtZWFuIHdoZW4geW91IHNheSBLZXfigJlzIGRpZ2l0YWwgZXN0YXRlPyBXZSBoYWQgYSBsb29rIG9uIHlvdXIgd2Vic2l0ZShzKSBhbmQgZGlzY292ZXJlZCB5b3UgaGF2ZSBtYW55IHdlYnNpdGVzIHVuZGVyIGtldyBkb21haW4uPGJyPkFyZSB0aGV5IGFsbCB1c2luZyB0aGUgc2FtZSB0ZWNobm9sb2d5IOKAkyBJcyBpdCBEcnVwYWw/IEFyZSB5b3UgdXNpbmcgQWNxdWlhIHdpdGggRHJ1cGFsCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgVGhpcyB0ZW5kZXIgaXMgcHJlZG9taW5hdGVseSBmb2N1c3NlZCBvbiB0aGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mIG91ciBrZXcub3JnIHdlYnNpdGUsIGJ1dCB3ZSBoYXZlIG51bWVyb3VzIG90aGVyIHdlYnNpdGVzL3BsYXRmb3JtcyB0aGF0IG1heSBiZSB3b3JrZWQgdXBvbiB1bmRlciB0aGlzIGNvbnRyYWN0Ljxicj5LZXfigJlzIGRpZ2l0YWwgZXN0YXRlIHJlZmVycyB0byB0aGUgZGlnaXRhbCBwcm9kdWN0cyB0aGF0IGFyZSBvd25lZCBieSBLZXcuIEFzIG1lbnRpb25lZCBpbiB0aGUgcXVlc3Rpb24sIHRoZXJlIGFyZSBudW1lcm91cyB3ZWJzaXRlcyB0aGF0IGFyZSBlaXRoZXIgcGFydCBvZiBvciBzZXBhcmF0ZSB0byB0aGUga2V3Lm9yZyBkb21haW4uPGJyPjxicj5BdCB0aGlzIHRpbWUsIGVhY2ggcHJvZHVjdCBpcyBidWlsdCBvbiBkaWZmZXJlbnQvc2VwYXJhdGUgc3lzdGVtcy4gRHJ1cGFsIDggaXMgY3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUga2V3Lm9yZyBzaXRlLjxicj48YnI+V2UgZG8gdXNlIEFjcXVpYSBmb3Igb3VyIGhvc3Rpbmcgc29sdXRpb24sIHdoaWNoIGlzIG1hbmFnZWQgYXMgYSBzZXBhcmF0ZSBjb250cmFjdCB0byB0aGlzIHRlbmRlci4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgMjguIFBsZWFzZSBjb25maXJtIHdoZXRoZXIgeW91IHdvdWxkIGNvbnNpZGVyIGEgc3VwcGxpZXIgaWYgdGhlaXIgZGV2ZWxvcG1lbnQgdGVhbSBoYXZlIGV4cGVyaWVuY2Ugb2YgbXVsdGlwbGUgcGhwIGZyYW1ld29ya3MgaW5jbHVkaW5nIERydXBhbCwgYXMgd2VsbCBhcyB0aGUgdGVjaG5pY2FsIGV4cGVydGlzZSB0byB3b3JrIHdpdGggRHJ1cGFsIDgsIGJ1dCB0aGV5IGRvIG5vdCBoYXZlIGEgcHVibGlzaGVkIGNhc2Ugc3R1ZHkgZm9yIERydXBhbCA4PwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZSBhc3Nlc3NtZW50IG9mIHN1cHBsaWVycyB3aWxsIG5vdCBpbmNsdWRlIGFueSBjYXNlIHN0dWRpZXMuPGJyPjxicj5UaGUgYXNzZXNzbWVudCB3aWxsIGJlIG9uIHdyaXR0ZW4gcHJvcG9zYWxzIGluIHJlc3BvbnNlIHRvIHRoaXMgdGVuZGVyIGFuZCB0d28gY2xpZW50IHJlZmVyZW5jZXMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgoKCiAgPC9kaXY+CjwvZGl2PgoKCgoKCiAgICAgICAgPC9tYWluPgogICAgICA8L2Rpdj4KICAgIAoKICAgIAogIDxmb290ZXIgY2xhc3M9ImdvdnVrLWZvb3RlciAiIHJvbGU9ImNvbnRlbnRpbmZvIj4KICA8ZGl2IGNsYXNzPSJnb3Z1ay13aWR0aC1jb250YWluZXIgIj4KICAgIAogICAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1mb290ZXJfX25hdmlnYXRpb24iPgogICAgICAgIAogICAgICAgICAgPGRpdiBjbGFzcz0iZ292dWstZm9vdGVyX19zZWN0aW9uIj4KICAgICAgICAgICAgPGgyIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2hlYWRpbmcgZ292dWstaGVhZGluZy1tIj5BYm91dCBEaWdpdGFsIE1hcmtldHBsYWNlPC9oMj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QgIj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9oZWxwIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdAogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtbWFya2V0cGxhY2UtYnV5ZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZXMgeW91IGNhbiBidXkKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW1hcmtldHBsYWNlLXN1cHBsaWVycy1ndWlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzIHlvdSBjYW4gc2VsbAogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvb3JnYW5pc2F0aW9ucy9jcm93bi1jb21tZXJjaWFsLXNlcnZpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCBDcm93biBDb21tZXJjaWFsIFNlcnZpY2VzCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgR292ZXJubWVudCBEaWdpdGFsIFNlcnZpY2VzCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSIvZy1jbG91ZC9zdXBwbGllcnMiPgogICAgICAgICAgICAgICAgICAgICAgICBHLUNsb3VkIHN1cHBsaWVyIEEgdG8gWgogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMiBjbGFzcz0iZ292dWstZm9vdGVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbSI+R3VpZGFuY2UgZm9yIHVzaW5nIERpZ2l0YWwgTWFya2V0cGxhY2U8L2gyPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8dWwgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdCAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtc3VwcGxpZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHlpbmcgdG8gc2VsbCBvbiB0aGUgRy1DbG91ZCBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zdXBwbGllcnMtZ3VpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICBBcHBseWluZyB0byBzZWxsIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvaG93LXRvLXNlbGwteW91ci1kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbmRpbmcgdG8gYnV5ZXIgcmVxdWlyZW1lbnRzIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZy1jbG91ZC1idXllcnMtZ3VpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICBCdXlpbmcgb24gdGhlIEctQ2xvdWQgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZGlnaXRhbC1vdXRjb21lcy1hbmQtc3BlY2lhbGlzdHMtYnV5ZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQnV5aW5nIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvdGhlLWNyb3duLWhvc3RpbmctZGF0YS1jZW50cmVzLWZyYW1ld29yay1vbi10aGUtZGlnaXRhbC1tYXJrZXRwbGFjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEJ1eWluZyBvbiB0aGUgQ3Jvd24gSG9zdGluZyBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgIDwvZGl2PgogICAgICA8aHIgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fc2VjdGlvbi1icmVhayI+CiAgICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YSI+CiAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YS1pdGVtIGdvdnVrLWZvb3Rlcl9fbWV0YS1pdGVtLS1ncm93Ij4KICAgICAgICAKICAgICAgICAgIDxoMiBjbGFzcz0iZ292dWstdmlzdWFsbHktaGlkZGVuIj5TdXBwb3J0IGxpbmtzPC9oMj4KICAgICAgICAgIAogICAgICAgICAgICA8dWwgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2lubGluZS1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSIvdGVybXMtYW5kLWNvbmRpdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFRlcm1zIGFuZCBjb25kaXRpb25zCiAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9jb29raWVzIj4KICAgICAgICAgICAgICAgICAgICBDb29raWVzCiAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9wcml2YWN5LW5vdGljZSI+CiAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSBub3RpY2UKICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC91bD4KICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YS1jdXN0b20iPgogICAgICAgICAgICAgIEJ1aWx0IGJ5IHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIiBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIj5Hb3Zlcm5tZW50IERpZ2l0YWwgU2VydmljZTwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAKICAgICAgICA8c3ZnCiAgICAgICAgICByb2xlPSJwcmVzZW50YXRpb24iCiAgICAgICAgICBmb2N1c2FibGU9ImZhbHNlIgogICAgICAgICAgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGljZW5jZS1sb2dvIgogICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICAgICAgICAgdmlld2JveD0iMCAwIDQ4My4yIDE5NS43IgogICAgICAgICAgaGVpZ2h0PSIxNyIKICAgICAgICAgIHdpZHRoPSI0MSIKICAgICAgICA+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiCiAgICAgICAgICAgIGQ9Ik00MjEuNSAxNDIuOFYuMWwtNTAuNyAzMi4zdjE2MS4xaDExMi40di01MC43em0tMTIyLjMtOS42QTQ3LjEyIDQ3LjEyIDAgMCAxIDIyMSA5Ny44YzAtMjYgMjEuMS00Ny4xIDQ3LjEtNDcuMSAxNi43IDAgMzEuNCA4LjcgMzkuNyAyMS44bDQyLjctMjcuMkE5Ny42MyA5Ny42MyAwIDAgMCAyNjguMSAwYy0zNi41IDAtNjguMyAyMC4xLTg1LjEgNDkuN0E5OCA5OCAwIDAgMCA5Ny44IDBDNDMuOSAwIDAgNDMuOSAwIDk3LjhzNDMuOSA5Ny44IDk3LjggOTcuOGMzNi41IDAgNjguMy0yMC4xIDg1LjEtNDkuN2E5Ny43NiA5Ny43NiAwIDAgMCAxNDkuNiAyNS40bDE5LjQgMjIuMmgzdi04Ny44aC04MGwyNC4zIDI3LjV6TTk3LjggMTQ1Yy0yNiAwLTQ3LjEtMjEuMS00Ny4xLTQ3LjFzMjEuMS00Ny4xIDQ3LjEtNDcuMSA0Ny4yIDIxIDQ3LjIgNDdTMTIzLjggMTQ1IDk3LjggMTQ1IgogICAgICAgICAgLz4KICAgICAgICA8L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0iZ292dWstZm9vdGVyX19saWNlbmNlLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIEFsbCBjb250ZW50IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUKICAgICAgICAgIDxhCiAgICAgICAgICAgIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiCiAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3Lm5hdGlvbmFsYXJjaGl2ZXMuZ292LnVrL2RvYy9vcGVuLWdvdmVybm1lbnQtbGljZW5jZS92ZXJzaW9uLzMvIgogICAgICAgICAgICByZWw9ImxpY2Vuc2UiCiAgICAgICAgICA+T3BlbiBHb3Zlcm5tZW50IExpY2VuY2UgdjMuMDwvYT4sIGV4Y2VwdCB3aGVyZSBvdGhlcndpc2Ugc3RhdGVkCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZ292dWstZm9vdGVyX19tZXRhLWl0ZW0iPgogICAgICAgIDxhCiAgICAgICAgICBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIGdvdnVrLWZvb3Rlcl9fY29weXJpZ2h0LWxvZ28iCiAgICAgICAgICBocmVmPSJodHRwczovL3d3dy5uYXRpb25hbGFyY2hpdmVzLmdvdi51ay9pbmZvcm1hdGlvbi1tYW5hZ2VtZW50L3JlLXVzaW5nLXB1YmxpYy1zZWN0b3ItaW5mb3JtYXRpb24vdWstZ292ZXJubWVudC1saWNlbnNpbmctZnJhbWV3b3JrL2Nyb3duLWNvcHlyaWdodC8iCiAgICAgICAgPsKpIENyb3duIGNvcHlyaWdodDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9mb290ZXI+CgoKICAgIAogIDxzY3JpcHQgc3JjPSIvc3RhdGljL2phdmFzY3JpcHRzL2FwcGxpY2F0aW9uLmpzPzA2NGMzYmY3ZDU5ZWM5NzIxNTkxOGU1NTNiMzBlMjQ5Ij48L3NjcmlwdD4KICAKCiAgPC9ib2R5Pgo8L2h0bWw+
78
78
  http_version:
79
- recorded_at: Tue, 10 Dec 2019 11:20:30 GMT
79
+ recorded_at: Wed, 17 Jun 2020 11:18:25 GMT
80
80
  recorded_with: VCR 4.0.0
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://www.digitalmarketplace.service.gov.uk/digital-outcomes-and-specialists/opportunities/11371
5
+ uri: https://www.digitalmarketplace.service.gov.uk/digital-outcomes-and-specialists/opportunities/12543
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -12,13 +12,13 @@ http_interactions:
12
12
  Accept:
13
13
  - "*/*"
14
14
  User-Agent:
15
- - Mechanize/2.7.6 Ruby/2.6.0p0 (http://github.com/sparklemotion/mechanize/)
15
+ - Mechanize/2.7.6 Ruby/2.7.1p83 (http://github.com/sparklemotion/mechanize/)
16
16
  Accept-Charset:
17
17
  - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
18
  Accept-Language:
19
19
  - en-us,en;q=0.5
20
20
  Cookie:
21
- - dm_cookie_probe=yum; dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.ENELvg.7IyDXss2_Q_pEXRTatwSiwFFJ5M
21
+ - dm_cookie_probe=yum; dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.Xun8AA.Whis01EBzm6gEJEC2_kKA3bV1XI
22
22
  Host:
23
23
  - www.digitalmarketplace.service.gov.uk
24
24
  Connection:
@@ -33,48 +33,48 @@ http_interactions:
33
33
  Content-Type:
34
34
  - text/html; charset=utf-8
35
35
  Content-Length:
36
- - '41734'
36
+ - '29730'
37
37
  Connection:
38
38
  - keep-alive
39
39
  Date:
40
- - Tue, 10 Dec 2019 11:20:29 GMT
40
+ - Wed, 17 Jun 2020 11:18:24 GMT
41
41
  Dm-Request-Id:
42
- - 7a149a380ee1cd4d
42
+ - fd450f5b712dd0d8
43
43
  Server:
44
44
  - nginx
45
45
  Set-Cookie:
46
- - dm_cookie_probe=yum; Expires=Wed, 09-Dec-2020 11:20:29 GMT; Max-Age=31536000.0;
46
+ - dm_cookie_probe=yum; Expires=Thu, 17-Jun-2021 11:18:24 GMT; Max-Age=31536000.0;
47
47
  Path=/
48
- - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.ENEQ_Q.629stfOMpetTyx8VgIuW9Sqylt0;
49
- Expires=Tue, 10-Dec-2019 12:20:29 GMT; Secure; HttpOnly; Path=/
48
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlfQ.Xun8AA.Whis01EBzm6gEJEC2_kKA3bV1XI;
49
+ Expires=Wed, 17-Jun-2020 12:18:24 GMT; Secure; HttpOnly; Path=/; SameSite=Lax
50
50
  Strict-Transport-Security:
51
51
  - max-age=31536000; includeSubdomains
52
52
  Vary:
53
53
  - Cookie
54
54
  X-B3-Spanid:
55
- - 7a149a380ee1cd4d
55
+ - fd450f5b712dd0d8
56
56
  X-B3-Traceid:
57
- - 7a149a380ee1cd4d
57
+ - fd450f5b712dd0d8
58
58
  X-Content-Type-Options:
59
59
  - nosniff
60
60
  X-Frame-Options:
61
61
  - DENY
62
62
  X-Vcap-Request-Id:
63
- - 5628236d-c105-4c62-52ed-375fe7004e1f
63
+ - 1acbb993-7410-423b-65a5-164a415defaa
64
64
  X-Xss-Protection:
65
65
  - 1; mode=block
66
66
  X-Cache:
67
67
  - Miss from cloudfront
68
68
  Via:
69
- - 1.1 7b0f68e9739bedcf2b240d30dd13a85b.cloudfront.net (CloudFront)
69
+ - 1.1 b2ce71f6c09ab30df63d53e155a1cded.cloudfront.net (CloudFront)
70
70
  X-Amz-Cf-Pop:
71
- - LHR52-C1
71
+ - LHR61-C1
72
72
  X-Amz-Cf-Id:
73
- - 26_FcbB7hfmiPngDu6mIn1ye7jT27XDRb3LxK6EJekbFdSqYurcn8Q==
73
+ - WRMsKNT88l4-T1_sYMJZI7m7qLqAz3dStdcGQkMj0QWSGpvpj3H3OA==
74
74
  body:
75
75
  encoding: ASCII-8BIT
76
76
  string: !binary |-
77
- Cgo8IURPQ1RZUEUgaHRtbD4KPCEtLVtpZiBsdCBJRSA5XT48aHRtbCBjbGFzcz0ibHRlLWllOCIgbGFuZz0iZW4iPjwhW2VuZGlmXS0tPgo8IS0tW2lmIGd0IElFIDhdPjwhLS0+PGh0bWwgbGFuZz0iZW4iPjwhLS08IVtlbmRpZl0tLT4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPHRpdGxlPgogIFdQMTg0NTogR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgcHJvY3VyZW1lbnQvIGJlbmVmaWNpYWwgb3duZXJzaGlwIHRyYW5zcGFyZW5jeSAtIGRpc2NvdmVyeS8gYWxwaGEgLSBEaWdpdGFsIE1hcmtldHBsYWNlCjwvdGl0bGU+CgogICAgPCEtLVtpZiBndCBJRSA4XT48IS0tPjxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZ292dWstdGVtcGxhdGUuY3NzPzAuMTkuMiIgbWVkaWE9InNjcmVlbiIgcmVsPSJzdHlsZXNoZWV0IiAvPjwhLS08IVtlbmRpZl0tLT4KICAgIDwhLS1baWYgSUUgNl0+PGxpbmsgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9nb3Z1ay10ZW1wbGF0ZS1pZTYuY3NzPzAuMTkuMiIgbWVkaWE9InNjcmVlbiIgcmVsPSJzdHlsZXNoZWV0IiAvPjwhW2VuZGlmXS0tPgogICAgPCEtLVtpZiBJRSA3XT48bGluayBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2dvdnVrLXRlbXBsYXRlLWllNy5jc3M/MC4xOS4yIiBtZWRpYT0ic2NyZWVuIiByZWw9InN0eWxlc2hlZXQiIC8+PCFbZW5kaWZdLS0+CiAgICA8IS0tW2lmIElFIDhdPjxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZ292dWstdGVtcGxhdGUtaWU4LmNzcz8wLjE5LjIiIG1lZGlhPSJzY3JlZW4iIHJlbD0ic3R5bGVzaGVldCIgLz48IVtlbmRpZl0tLT4KICAgIDxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZ292dWstdGVtcGxhdGUtcHJpbnQuY3NzPzAuMTkuMiIgbWVkaWE9InByaW50IiByZWw9InN0eWxlc2hlZXQiIC8+CgogICAgPCEtLVtpZiBJRSA4XT48bGluayBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2ZvbnRzLWllOC5jc3M/MC4xOS4yIiBtZWRpYT0iYWxsIiByZWw9InN0eWxlc2hlZXQiIC8+PCFbZW5kaWZdLS0+CiAgICA8IS0tW2lmIGd0ZSBJRSA5XT48IS0tPjxsaW5rIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvZm9udHMuY3NzPzAuMTkuMiIgbWVkaWE9ImFsbCIgcmVsPSJzdHlsZXNoZWV0IiAvPjwhLS08IVtlbmRpZl0tLT4KICAgIDwhLS1baWYgbHQgSUUgOV0+PHNjcmlwdCBzcmM9Ii9zdGF0aWMvamF2YXNjcmlwdHMvaWUuanM/MC4xOS4yIj48L3NjcmlwdD48IVtlbmRpZl0tLT4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2Zhdmljb24uaWNvPzAuMTkuMiIgdHlwZT0iaW1hZ2UveC1pY29uIiAvPgogICAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2dvdi51a19sb2dvdHlwZV9jcm93bi5zdmc/MC4xOS4yIiBjb2xvcj0iIzBiMGMwYyI+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIHNpemVzPSIxNTJ4MTUyIiBocmVmPSIvc3RhdGljL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTE1MngxNTIucG5nPzAuMTkuMiI+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIHNpemVzPSIxMjB4MTIwIiBocmVmPSIvc3RhdGljL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTEyMHgxMjAucG5nPzAuMTkuMiI+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIHNpemVzPSI3Nng3NiIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Nng3Ni5wbmc/MC4xOS4yIj4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi02MHg2MC5wbmc/MC4xOS4yIj4KCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSIvc3RhdGljL2ltYWdlcy9vcGVuZ3JhcGgtaW1hZ2UucG5nPzAuMTkuMiI+CgogICAgCiAgCgoKCgoKCgogIDxtZXRhIG5hbWU9ImdhX2N1c3RvbURpbWVuc2lvbiIgZGF0YS1pZD0iMTIiIGRhdGEtdmFsdWU9IlVzZXIgcmVzZWFyY2ggYmFubmVyIj4KCgoKCgogIDwhLS1baWYgZ3QgSUUgOF0+PCEtLT4KICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0ic2NyZWVuIiBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2FwcGxpY2F0aW9uLmNzcz8wZjliYTUyMzU2M2Q1MmMzMzZkMWZlMjllNzkwYzNlNSIgLz4KPCEtLTwhW2VuZGlmXS0tPgo8IS0tW2lmIElFIDddPgogIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJzY3JlZW4iIGhyZWY9Ii9zdGF0aWMvc3R5bGVzaGVldHMvYXBwbGljYXRpb24taWU3LmNzcz8zODM4ZTc1YzZiMTg1OTQ4ZTczOTQ3YTliYzJlNTYxMiIgLz4KPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUgOF0+CiAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InNjcmVlbiIgaHJlZj0iL3N0YXRpYy9zdHlsZXNoZWV0cy9hcHBsaWNhdGlvbi1pZTguY3NzP2EzNzNhYTFiNzM5ZjUzODZkN2E5MDNlZDY4NjJkNmM4IiAvPgo8IVtlbmRpZl0tLT4KICAKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iVEtHU0dabmZIcHgxLWxLT3RoSTE3QU50d2s3ZnozRjRTYnI3N0kwcHBPMCIgLz4KCgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9IiI+CiAgICA8c2NyaXB0PmRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgPyBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcganMtZW5hYmxlZCcgOiAnanMtZW5hYmxlZCcpOzwvc2NyaXB0PgoKICAgIAoKICAgIDxkaXYgaWQ9InNraXBsaW5rLWNvbnRhaW5lciI+CiAgICAgIDxkaXY+CiAgICAgICAgPGEgaHJlZj0iI2NvbnRlbnQiIGNsYXNzPSJza2lwbGluayI+U2tpcCB0byBtYWluIGNvbnRlbnQ8L2E+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZ2xvYmFsLWNvb2tpZS1tZXNzYWdlIj4KICAgICAgCiAgICAgICAgCiAgPHA+R09WLlVLIHVzZXMgY29va2llcyB0byBtYWtlIHRoZSBzaXRlIHNpbXBsZXIuIDxhIGhyZWY9Ii9jb29raWVzIj5GaW5kIG91dCBtb3JlIGFib3V0IGNvb2tpZXM8L2E+PC9wPgoKCiAgICAgIAogICAgPC9kaXY+CgogICAgCiAgICA8aGVhZGVyIHJvbGU9ImJhbm5lciIgaWQ9Imdsb2JhbC1oZWFkZXIiIGNsYXNzPSJ3aXRoLXByb3Bvc2l0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1nbG9iYWwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWxvZ28iPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsiIHRpdGxlPSJHbyB0byB0aGUgR09WLlVLIGhvbWVwYWdlIiBpZD0ibG9nbyIgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgICAgICAgIDxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9nb3YudWtfbG9nb3R5cGVfY3Jvd25faW52ZXJ0X3RyYW5zLnBuZz8wLjE5LjIiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzMiIgYWx0PSIiPiBHT1YuVUsKICAgICAgICAgICAgPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICA8ZGl2IGNsYXNzPSJoZWFkZXItdGl0bGUiPgogICAgPGEgaHJlZj0iLyI+RGlnaXRhbCBNYXJrZXRwbGFjZTwvYT4KICAgIDxzdHJvbmcgY2xhc3M9InBoYXNlLXRhZyI+QkVUQTwvc3Ryb25nPgo8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgPGRpdiBjbGFzcz0iaGVhZGVyLXByb3Bvc2l0aW9uIj4KICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgIDxhIGhyZWY9IiNwcm9wb3NpdGlvbi1saW5rcyIgY2xhc3M9ImpzLWhlYWRlci10b2dnbGUgbWVudSI+TWVudTwvYT4KICAgIDxuYXYgaWQ9InByb3Bvc2l0aW9uLW1lbnUiPgogICAgICA8dWwgaWQ9InByb3Bvc2l0aW9uLWxpbmtzIj4KICAgICAgICA8bGk+CiAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvYnV5aW5nLWFuZC1zZWxsaW5nLW9uLXRoZS1kaWdpdGFsLW1hcmtldHBsYWNlIj5HdWlkYW5jZTwvYT4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT4KICAgICAgICAgIDxhIGhyZWY9Ii9oZWxwIj5IZWxwPC9hPgogICAgICAgIDwvbGk+CiAgICAgICAgCgogICAgICAgIAogICAgICAgICAgCiAgICAgICAgCgogICAgICAgIAogICAgICAgIDxsaT4KICAgICAgICAgIDxhIGhyZWY9Ii91c2VyL2xvZ2luIj5Mb2cgaW48L2E+CiAgICAgICAgPC9saT4KICAgICAgICAKICAgICAgPC91bD4KICAgIDwvbmF2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CiAgICAKCiAgICAKICAKICAKICAKCiAgCiAgICA8ZGl2IGNsYXNzPSJ1c2VyLXJlc2VhcmNoLWJhbm5lciI+CiAgPGRpdiBjbGFzcz0id3JhcHBlciI+CiAgICA8cD4KICAgICAgPHN0cm9uZyBjbGFzcz0iYmFubmVyLWhlYWRpbmciPkhlbHAgdXMgaW1wcm92ZSB0aGUgRGlnaXRhbCBNYXJrZXRwbGFjZTwvc3Ryb25nPgogICAgICA8YSAKICAgICAgICBocmVmPSIjIiAKICAgICAgICBjbGFzcz0idXNlci1yZXNlYXJjaC1iYW5uZXItY2xvc2UtYnRuIgogICAgICAgIGRhdGEtYW5hbHl0aWNzPSJ0cmFja0V2ZW50IgogICAgICAgIGRhdGEtYW5hbHl0aWNzLWNhdGVnb3J5PSJ1c2VyLXJlc2VhcmNoIgogICAgICAgIGRhdGEtYW5hbHl0aWNzLWFjdGlvbj0iQ2xvc2UgYmFubmVyIgogICAgICA+Q2xvc2U8L2E+CiAgICA8L3A+CiAgICA8cD4KICAgICAgPGEgCiAgICAgICAgaHJlZj0iL3VzZXIvbm90aWZpY2F0aW9ucy91c2VyLXJlc2VhcmNoIgogICAgICAgIGRhdGEtYW5hbHl0aWNzPSJ0cmFja0V2ZW50IgogICAgICAgIGRhdGEtYW5hbHl0aWNzLWNhdGVnb3J5PSJ1c2VyLXJlc2VhcmNoIgogICAgICAgIGRhdGEtYW5hbHl0aWNzLWFjdGlvbj0iVmlldyBzaWduIHVwIHRvIHVzZXIgcmVzZWFyY2ggc2NyZWVuIgogICAgICA+U2lnbiB1cCB0byBiZSBhIHBvdGVudGlhbCB1c2VyIHJlc2VhcmNoIHBhcnRpY2lwYW50PC9hPgogICAgPC9wPgogIDwvZGl2Pgo8L2Rpdj4KICAKCgogICAgPGRpdiBpZD0iZ2xvYmFsLWhlYWRlci1iYXIiPjwvZGl2PgoKICAgIAogICAgCiAgICAKICAKICAKICAgIDxkaXYgaWQ9Imdsb2JhbC1icmVhZGNydW1iIiBjbGFzcz0iaGVhZGVyLWNvbnRleHQiPgogIDxuYXY+CiAgICA8b2wgY2xhc3M9Imdyb3VwIiByb2xlPSJicmVhZGNydW1icyI+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8iPkRpZ2l0YWwgTWFya2V0cGxhY2U8L2E+PC9saT4KICAgICAgICAKICAgICAgCiAgICAgICAgPGxpPjxhIGhyZWY9Ii9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy9vcHBvcnR1bml0aWVzIj5TdXBwbGllciBvcHBvcnR1bml0aWVzPC9hPjwvbGk+CiAgICAgICAgCiAgICAgIAogICAgPC9vbD4KICA8L25hdj4KPC9kaXY+CiAgCgogIDxkaXYgaWQ9IndyYXBwZXIiPgogICAgPG1haW4gaWQ9ImNvbnRlbnQiIHJvbGU9Im1haW4iPgogICAgICAKICAKCiAgICAgIAoKCgo8ZGl2IGNsYXNzPSJncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iY29sdW1uLXR3by10aGlyZHMiPgogICAgPGhlYWRlciBjbGFzcz0icGFnZS1oZWFkaW5nLXNtYWxsZXIiPgogICAgICA8c3BhbiBjbGFzcz0iZ292dWstY2FwdGlvbi1sIj5Hb3Zlcm5tZW50IERpZ2l0YWwgU2VydmljZSAoR0RTLCBwYXJ0IG9mIHRoZSBDYWJpbmV0IE9mZmljZSkvIEZvcmVpZ24gJmFtcDsgQ29tbW9ud2VhbHRoIE9mZmljZSAoRkNPKTwvc3Bhbj4KICAgICAgPGgxIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLWwiPldQMTg0NTogR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgcHJvY3VyZW1lbnQvIGJlbmVmaWNpYWwgb3duZXJzaGlwIHRyYW5zcGFyZW5jeSAtIGRpc2NvdmVyeS8gYWxwaGE8L2gxPgogICAgICA8c3BhbiBkYXRhLWxvdD0iZGlnaXRhbC1vdXRjb21lcyI+PC9zcGFuPgogICAgPC9oZWFkZXI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImNvbHVtbi1vbmUtd2hvbGUiPgogICAgCgo8ZGl2IGNsYXNzPSJzdGF0aXN0aWMtY29udGFpbmVyIiBpZD0iaW5jb21wbGV0ZS1hcHBsaWNhdGlvbnMiPgogICAgPGgzIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPkluY29tcGxldGUgYXBwbGljYXRpb25zPC9oMz4KICAgIDxkaXYgY2xhc3M9ImJpZy1zdGF0aXN0aWMiPjQ8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXRpc3RpYy1uYW1lIj5JbmNvbXBsZXRlIGFwcGxpY2F0aW9uczwvZGl2PgogICAgCiAgICAgIDxkaXYgY2xhc3M9InN0YXRpc3RpYy1kZXNjcmlwdGlvbiI+NCBTTUUsIDAgbGFyZ2U8L2Rpdj4KICAgIAogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJzdGF0aXN0aWMtY29udGFpbmVyIiBpZD0iY29tcGxldGVkLWFwcGxpY2F0aW9ucyI+CiAgICA8aDMgY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Q29tcGxldGVkIGFwcGxpY2F0aW9uczwvaDM+CiAgICA8ZGl2IGNsYXNzPSJiaWctc3RhdGlzdGljIj4wPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdGF0aXN0aWMtbmFtZSI+Q29tcGxldGVkIGFwcGxpY2F0aW9uczwvZGl2PgogICAgCiAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImNvbHVtbi1vbmUtd2hvbGUiPgogICAgCgogICAgCiAgICA8dGFibGUgY2xhc3M9InN1bW1hcnktaXRlbS1ib2R5Ij4KICAgIDxjYXB0aW9uIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPgogICAgICBJbXBvcnRhbnQgZGF0ZXMKICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5QdWJsaXNoZWQ8L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5Nb25kYXkgOSBEZWNlbWJlciAyMDE5PC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5EZWFkbGluZSBmb3IgYXNraW5nIHF1ZXN0aW9uczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk1vbmRheSAxNiBEZWNlbWJlciAyMDE5IGF0IDExOjU5cG0gR01UPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICAgICAgCiAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5DbG9zaW5nIGRhdGUgZm9yIGFwcGxpY2F0aW9uczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk1vbmRheSAyMyBEZWNlbWJlciAyMDE5IGF0IDExOjU5cG0gR01UPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICA8L3RyPgoKICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+CiAgCgogICAgPGgyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0taGVhZGluZyIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtMSI+CiAgICAgIAogICAgICBPdmVydmlldwogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgT3ZlcnZpZXcKICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPlN1bW1hcnkgb2YgdGhlIHdvcms8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkJ1aWxkaW5nIG9uIHdvcmsgcGxhbm5lZCBvciB1bmRlcndheSBpbiAzIG91dCBvZiA1IHByaW9yaXRpc2VkIGNvdW50cmllcyAoSW5kb25lc2lhLCBNZXhpY28gYW5kIFNvdXRoIEFmcmljYSksIEdEUy8gRkNPIHJlcXVpcmUgcmVzZWFyY2gsIGFuYWx5c2lzLCBwcm90b3R5cGluZyBhbmQgYWdpbGUgZGVsaXZlcnkgY2FwYWJpbGl0aWVzLCB0byBleHBsb3JlIGFuZCB0ZXN0IHRoZSBsaW5rYWdlcyBiZXR3ZWVuIHByb2N1cmVtZW50IHN5c3RlbSBlbGVtZW50cyAoZWcgc3VwcGxpZXIgcmVnaXN0cmF0aW9uKSwgb3BlbiBkYXRhLCBhbmQgcmVnaXN0ZXJzIG9mIGNvbXBhbnkgYmVuZWZpY2lhbCBvd25lcnNoaXAgKENCTykuPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+TGF0ZXN0IHN0YXJ0IGRhdGU8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPk1vbmRheSAxMCBGZWJydWFyeSAyMDIwPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+RXhwZWN0ZWQgY29udHJhY3QgbGVuZ3RoPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4xNiB3ZWVrcyAodG8gMjkgTWF5IDIwMjApICsgcG9zc2libGUgZXh0ZW5zaW9uIG9mIHVwIHRvIDQgd2Vla3M8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5Mb2NhdGlvbjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5ObyBzcGVjaWZpYyBsb2NhdGlvbiwgZWcgdGhleSBjYW4gd29yayByZW1vdGVseTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbiB0aGUgd29yayBpcyBmb3I8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkdvdmVybm1lbnQgRGlnaXRhbCBTZXJ2aWNlIChHRFMsIHBhcnQgb2YgdGhlIENhYmluZXQgT2ZmaWNlKS8gRm9yZWlnbiAmYW1wOyBDb21tb253ZWFsdGggT2ZmaWNlIChGQ08pPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+QnVkZ2V0IHJhbmdlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4mIzM0O8KjMzEyLDAwMCArIFZBVDxicj4odGhlIGludGVybmF0aW9uYWwgdHJhdmVsIGV4cGVuc2VzIGJ1ZGdldCBpcyBleGNsdWRlZCBmcm9tIHRoaXMgZmlndXJlKS48YnI+PGJyPkFzIHRoaXMgY29udHJhY3Qgc3BhbnMgdHdvIGZpbmFuY2lhbCByZXBvcnRpbmcgeWVhcnMsIHRoZSBzdWNjZXNzZnVsIHN1cHBsaWVyIGlzIHJlcXVlc3RlZCB0byBpbnZvaWNlIHVwIHRvIMKjMjUwLDAwMCAoZXhjbHVkaW5nIFZBVCkgZm9yIHdvcmsgY29tcGxldGVkIGFuZCBpbmNsdWRpbmcgYWxsIHRyYXZlbCBleHBlbnNlcyBpbmN1cnJlZCwgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIDIwMTkvMjAgZmluYW5jaWFsIHllYXIuPGJyPjxicj5UaGlzIGZvcmVjYXN0ZWQgZmlndXJlIG1heSBiZSB1cGRhdGVkIHdoZW4gdGhlIGNhbGwtb2ZmIGNvbnRyYWN0IGlzIGZpbmFsaXNlZC4mIzM0Ozwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+CiAgCgogICAgPGgyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0taGVhZGluZyIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtMiI+CiAgICAgIAogICAgICBBYm91dCB0aGUgd29yawogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgQWJvdXQgdGhlIHdvcmsKICAgIDwvY2FwdGlvbj4KICAgIDx0aGVhZCBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmdzIj4KICAgICAgPHRyPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZy1maXJzdCI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPk9wcG9ydHVuaXR5IGF0dHJpYnV0ZSBuYW1lPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIHZhbHVlPC9zcGFuPgogICAgICAgICAgICAKICAgICAgICAgIDwvdGg+CiAgICAgICAgCiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPldoeSB0aGUgd29yayBpcyBiZWluZyBkb25lPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4mIzM0O0luY3JlYXNpbmcgcHVibGljIHByb2N1cmVtZW50IGFuZCBjb3Jwb3JhdGUgb3duZXJzaGlwIHRyYW5zcGFyZW5jeSBpcyB2aXRhbCB0byBhZGRyZXNzIGNvcnJ1cHRpb24uPGJyPjxicj5UaGUgU3RvbGVuIEFzc2V0IFJlY292ZXJ5ICgmIzM5O1N0QVImIzM5OykgSW5pdGlhdGl2ZSBmcm9tIHRoZSBXb3JsZCBCYW5rLyBVbml0ZWQgTmF0aW9ucyBPZmZpY2Ugb24gRHJ1Z3MgYW5kIENyaW1lIChVTk9EQyksIGVzdGltYXRlcyB0aGF0IGFub255bW91cyBjb21wYW5pZXMgd2VyZSBpbnZvbHZlZCBpbiA3MCUgb2YgdGhlIGxhcmdlc3QgY29ycnVwdGlvbiBjYXNlcyBiZXR3ZWVuIDE5ODAgYW5kIDIwMTAuPGJyPjxicj5UaGUgVUsgaXMgYXNzaXN0aW5nIGNvdW50cmllcyB0aGF0IGFyZTo8YnI+PGJyPi1kZXZlbG9waW5nIG5ldyBuYXRpb25hbCBwdWJsaWMgcmVnaXN0ZXJzIG9mIENCTy48YnI+LXN1YnNjcmliaW5nIHRvIHRoZSBnbG9iYWwgT3BlbiBPd25lcnNoaXAgUmVnaXN0ZXIgKDxhIGhyZWY9Imh0dHBzOi8vcmVnaXN0ZXIub3Blbm93bmVyc2hpcC5vcmcvKSIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vcmVnaXN0ZXIub3Blbm93bmVyc2hpcC5vcmcvKTwvYT4uPGJyPjxicj5XUDE4NDUgYWxpZ25zIHR3byBhY3Rpdml0aWVzIGZ1bmRlZCBieSB0aGUgRkNPIEdsb2JhbCBBbnRpLUNvcnJ1cHRpb24gUHJvZ3JhbW1lIChHQUNQKSwgZm9jdXNzaW5nIG9uIHRoZSBpbnRlcnNlY3Rpb24gb2YgcHVibGljIHByb2N1cmVtZW50IGFuZCBDQk86IHRoZSBPcGVuIENvbnRyYWN0aW5nIERhdGEgU3RhbmRhcmQgKE9DRFMpIGFuZCBCZW5lZmljaWFsIE93bmVyc2hpcCBEYXRhIFN0YW5kYXJkIChCT0RTKTsgcG9saWNpZXM7IHByb2Nlc3Nlczsgc3lzdGVtczsgZ292ZXJubWVudCBmdW5jdGlvbnMsIGV0Yy48YnI+PGJyPkdEUyBHbG9iYWwgRGlnaXRhbCBNYXJrZXRwbGFjZSBQcm9ncmFtbWUgd29yayBvbiBwdWJsaWMgcHJvY3VyZW1lbnQvIG5vbi1nb3Zlcm5tZW50IG9yZ2FuaXNhdGlvbiAoTkdPKSBPcGVuIE93bmVyc2hpcCB3b3JrIG9uIENCTywgYXJlIHJlZmVyZW5jZWQgaW4gdGhlOjxicj48YnI+LVVLIEFudGktQ29ycnVwdGlvbiBTdHJhdGVneSAyMDE3IHRvIDIwMjIuPGJyPi1ITSBUcmVhc3VyeSBhbmQgSG9tZSBPZmZpY2UgRWNvbm9taWMgQ3JpbWUgUGxhbiwgMjAxOSB0byAyMDIyLjxicj48YnI+4oCYU3RhZ2UgMeKAmSBkZWxpdmVyYWJsZXMgLSBieSAwMyBBcHJpbCAyMDIwOjxicj48YnI+LVNjb3BlZCwgcmVzZWFyY2hlZCBhbmQgYW5hbHlzZWQgY29udGV4dHMgKHJlbGF0aW5nIHRvIEdsb2JhbCBEaWdpdGFsIE1hcmtldHBsYWNlIFByb2dyYW1tZSB3b3JrLyBDQk8pIGluIDMgY291bnRyaWVzLjxicj4tSW5pdGlhbCBwcm90b3R5cGVzIGJhc2VkIG9uIHNjb3BpbmcsIHJlc2VhcmNoIGFuZCBhbmFseXNpcy48YnI+LVBsYW5zIGZvciDigJhTdGFnZSAy4oCZLjxicj48YnI+4oCYU3RhZ2UgMuKAmSBkZWxpdmVyYWJsZXMgLSBieSAyOSBNYXkgMjAyMDo8YnI+PGJyPi1EZXZlbG9wZWQgcHJvdG90eXBlcy8gcHJvb2Ygb2YgY29uY2VwdHMuPGJyPi1QbGFucyBmb3IgZnVydGhlciByZXNlYXJjaC8gZGV2ZWxvcG1lbnQuJiMzNDs8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5Qcm9ibGVtIHRvIGJlIHNvbHZlZDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+JiMzNDtBY2NvcmRpbmcgdG8gdGhlIFdvcmxkIEJhbmsvIFVOT0RDICYjMzk7U3RBUiYjMzk7IHJlcG9ydCB0aXRsZWQgJiMzOTtUaGUgUHVwcGV0IE1hc3RlcnM6IEhvdyB0aGUgQ29ycnVwdCBVc2UgTGVnYWwgU3RydWN0dXJlcyB0byBIaWRlIFN0b2xlbiBBc3NldHMgYW5kIFdoYXQgdG8gRG8gQWJvdXQgSXQmIzM5OyAoPGEgaHJlZj0iaHR0cHM6Ly9zdGFyLndvcmxkYmFuay5vcmcvcHVibGljYXRpb24vcHVwcGV0LW1hc3RlcnMpIiBjbGFzcz0iYnJlYWstbGluayIgcmVsPSJleHRlcm5hbCI+aHR0cHM6Ly9zdGFyLndvcmxkYmFuay5vcmcvcHVibGljYXRpb24vcHVwcGV0LW1hc3RlcnMpPC9hPiBwdWJsaXNoZWQgaW4gT2N0b2JlciAyMDExLCBtb3N0IGxhcmdlLXNjYWxlIGNvcnJ1cHRpb24gY2FzZXMgaW52b2x2ZSB1c2luZyBsZWdhbCBlbnRpdGllcyB0byBjb25jZWFsIG93bmVyc2hpcCBhbmQgY29udHJvbCBvZiBjb3JydXB0IHByb2NlZWRzLjxicj48YnI+QW5vbnltb3VzIHNoZWxsIGNvbXBhbmllcyBmYWNpbGl0YXRlIGNvcnJ1cHRpb24gYW5kIGZyYXVkLCBvcmdhbmlzZWQgY3JpbWUgYW5kIHRoZSBtb3ZlbWVudCBvZiBpbGxpY2l0IGZ1bmRzLCBlZyBtb25leSBsYXVuZGVyaW5nIHRvIHN1cHBvcnQgaHVtYW4gdHJhZmZpY2tpbmcgYW5kIHRoZSBkcnVnIHRyYWRlLCBmdW5kaW5nIHRlcnJvciBncm91cHMgYW5kIGNyaW1pbmFsIGdhbmdzLCBldGMuPGJyPjxicj5UaHJvdWdoIHVubGF3ZnVsIHJlbGF0aW9uc2hpcHMgd2l0aCBjb3JydXB0IHB1YmxpYyBwcm9jdXJlbWVudCBvZmZpY2lhbHMsIGNvcnBvcmF0ZSBlbnRpdGllcyB3aG8gc2VsbCBwcm9kdWN0cywgc2VydmljZXMgYW5kIHdvcmtzIHdoaWxlIG1haW50YWluaW5nIGludGVudGlvbmFsbHkgb3BhcXVlLyBoaWRkZW4vIGNvbXBsZXggb3duZXJzaGlwIGFuZCBiZW5lZmljaWFyeSBzdHJ1Y3R1cmVzLCBoYXZlIHVuZmFpciBhY2Nlc3MgdG8gYSBsdWNyYXRpdmUgZ2xvYmFsIG1hcmtldCB3b3J0aCBhbG1vc3QgVVMkMTAgdHJpbGxpb24gYW5udWFsbHkuPGJyPjxicj5DaXZpbCBzb2NpZXR5IGNhbiBob2xkIHB1YmxpYyBpbnN0aXR1dGlvbnMgYW5kIGNvbXBhbmllcyB0byBhY2NvdW50IGZvciB0aGVpciBhY3Rpb25zIGFuZCBpbnRlcmFjdGlvbnMsIGJ5IG1ha2luZyBpdCBlYXNpZXIgdG8gcHVibGlzaCBhbmQgYWNjZXNzIGhpZ2gtcXVhbGl0eSwgbGlua2VkIGRhdGEgYWJvdXQ6PGJyPjxicj4taG93IHByb2N1cmVtZW50cyBhcmUgcGxhbm5lZCBhbmQgZGVsaXZlcmVkLCBhbmQgY29udHJhY3RzIGltcGxlbWVudGVkLjxicj4td2hvIG93bnMgdGhlIGNvbXBhbmllcyB0aGF0IGdvdmVybm1lbnRzIGFyZSBjb250cmFjdGluZyB3aXRoLjxicj48YnI+VG8gc3RhcnQgYWRkcmVzc2luZyB0aGlzIGluIDIwMTkvMjAsIEdEUy8gRkNPIHJlcXVpcmVzIHBhcnRuZXIgdGVhbXMgdG8gY29uY3VycmVudGx5IHNjb3BlLCByZXNlYXJjaCwgYW5hbHlzZSBhbmQgcHJvdG90eXBlIGZvciBJbmRvbmVzaWEsIE1leGljbyBhbmQgU291dGggQWZyaWNhIGNvbnRleHRzLCByZWxhdGluZyB0byBHbG9iYWwgRGlnaXRhbCBNYXJrZXRwbGFjZSBQcm9ncmFtbWUgd29yay8gQ0JPLiYjMzQ7PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+V2hvIHRoZSB1c2VycyBhcmUgYW5kIHdoYXQgdGhleSBuZWVkIHRvIGRvPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4mIzM0O0FzIGNpdGl6ZW5zLCB3ZSBuZWVkIHRvIGtub3cgb3VyIGdvdmVybm1lbnRzIGFyZSBiZWluZyBmYWlyLCBvcGVuLCB0cmFuc3BhcmVudCwgYW5kIGFjdGluZyB3aXRoIGhvbmVzdHkgYW5kIGludGVncml0eSwgd2hlbiBkZWNpZGluZyBob3cgb3VyIHRheHBheWVyc+KAmSBtb25leSBzaG91bGQgYmUgc3BlbnQsIHNvIHRoYXQgd2UgdHJ1c3QgdGhleeKAmXJlIGRlbGl2ZXJpbmcgYmV0dGVyIHB1YmxpYyBzZXJ2aWNlcy48YnI+PGJyPkFzIHB1YmxpYyBwcm9jdXJlbWVudCBvZmZpY2lhbHMgd2l0aCBpbnRlZ3JpdHksIHdlIG5lZWQgdG8ga25vdyB0aGF0IHRoZSBjb3Jwb3JhdGUgZW50aXRpZXMgd2hvIGFyZSByZWdpc3RlcmluZyBhbmQgY29tcGV0aW5nIGZvciBvcHBvcnR1bml0aWVzIHRvIHN1cHBseSB0aGVpciBwcm9kdWN0cywgc2VydmljZXMgb3Igd29ya3MgdG8gZ292ZXJubWVudHMsIGFyZSBiZWluZyBvcGVuIGFuZCB0cmFuc3BhcmVudCBhYm91dCB0aGVpciBvd25lcnNoaXAgc3RydWN0dXJlcyBhbmQgYmVuZWZpY2lhcmllcywgc28gdGhhdCB3ZSBjYW4gYmUgY29uZmlkZW50IHRoYXQgdGhleeKAmXJlIGNvbmR1Y3RpbmcgdGhlaXIgYnVzaW5lc3NlcyBsYXdmdWxseSBhbmQgd2l0aCBob25lc3R5IGFuZCBpbnRlZ3JpdHkuPGJyPjxicj5BcyBjb3Jwb3JhdGUgZW50aXRpZXMgd2l0aCBpbnRlZ3JpdHkgd2lzaGluZyB0byBzdXBwbHkgb3VyIHByb2R1Y3RzLCBzZXJ2aWNlcyBvciB3b3JrcyB0byBnb3Zlcm5tZW50cywgd2UgbmVlZCB0byBrbm93IHRoYXQgcHVibGljIHByb2N1cmVtZW50IG9mZmljaWFscyBhcmUgYWN0aW5nIHdpdGggaG9uZXN0eSBhbmQgaW50ZWdyaXR5LCBhbmQgZXZhbHVhdGluZyB1cyBmYWlybHkgYW5kIHdpdGhvdXQgZGlzY3JpbWluYXRpb24gZHVyaW5nIHByb2N1cmVtZW50cywgc28gdGhhdCB3ZSB0cnVzdCB0aGV54oCZcmUgYXdhcmRpbmcgY29udHJhY3RzIGFwcHJvcHJpYXRlbHkgYW5kIHN0aW11bGF0aW5nIGNvbXBldGl0aXZlIG1hcmtldHMuPGJyPjxicj5BcyByZXNlYXJjaGVycyBvciBqb3VybmFsaXN0cywgd2UgbmVlZCB0byBlYXNpbHkgYW5hbHlzZSBidWxrIGRhdGFzZXRzIG9uIGdvdmVybm1lbnQgcHJvY3VyZW1lbnQgYW5kIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHRoZSBjb21wYW5pZXMgdGhleeKAmXJlIGNvbnRyYWN0aW5nIHdpdGgsIHNvIHRoYXQgd2UgY2FuIGhvbGQgaW5zdGl0dXRpb25zIHRvIGFjY291bnQgZm9yIGRlY2lzaW9ucyB0aGF0IGFmZmVjdCBwdWJsaWMgc3BlbmRpbmcuJiMzNDs8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5FYXJseSBtYXJrZXQgZW5nYWdlbWVudDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+JiMzNDtHRFMgaGFzIGVuZ2FnZWQgd2l0aCB0aGUgbWFya2V0IG9uIG51bWVyb3VzIG9jY2FzaW9ucyBzaW5jZSB0aGUgR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgUHJvZ3JhbW1lIHdhcyBmaXJzdCBwdWJsaWNseSBhbm5vdW5jZWQgaW4gU2VwdGVtYmVyIDIwMTcgLSBzZWUgdGhlIEdEUyBibG9nIHBvc3QgdGl0bGVkIOKAmE1ha2UgcHJvY3VyZW1lbnQgb3BlbjogaXQgbWFrZXMgZ292ZXJubWVudCBiZXR0ZXLigJkgKDxhIGhyZWY9Imh0dHBzOi8vZ2RzLmJsb2cuZ292LnVrLzIwMTcvMTAvMDQvbWFrZS1wcm9jdXJlbWVudC1vcGVuLWl0LW1ha2VzLWdvdmVybm1lbnQtYmV0dGVyKSIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vZ2RzLmJsb2cuZ292LnVrLzIwMTcvMTAvMDQvbWFrZS1wcm9jdXJlbWVudC1vcGVuLWl0LW1ha2VzLWdvdmVybm1lbnQtYmV0dGVyKTwvYT4uPGJyPjxicj5Nb3N0IHJlY2VudGx5IHdhcyBBdWd1c3QgMjAxOSwgZGV0YWlscyBvZiB3aGljaCAoaW5jbHVkaW5nIHdoYXQgd2FzIGRpc2N1c3NlZCkgaGF2ZSBiZWVuIHB1Ymxpc2hlZCBhcyBhIEdEUyBibG9nIHBvc3QgdGl0bGVkIOKAmEVuZ2FnaW5nIFVLIHN1cHBsaWVycyBpbiB0aGUgR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgUHJvZ3JhbW1lIGFscGhhIHBoYXNl4oCZICg8YSBocmVmPSJodHRwczovL2dkcy5ibG9nLmdvdi51ay8yMDE5LzA4LzEyL2VuZ2FnaW5nLXVrLXN1cHBsaWVycy1pbi10aGUtZ2xvYmFsLWRpZ2l0YWwtbWFya2V0cGxhY2UtcHJvZ3JhbW1lLWFscGhhLXBoYXNlKS4mIzM0OyIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vZ2RzLmJsb2cuZ292LnVrLzIwMTkvMDgvMTIvZW5nYWdpbmctdWstc3VwcGxpZXJzLWluLXRoZS1nbG9iYWwtZGlnaXRhbC1tYXJrZXRwbGFjZS1wcm9ncmFtbWUtYWxwaGEtcGhhc2UpLiYjMzQ7PC9hPjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkFueSB3b3JrIHRoYXTigJlzIGFscmVhZHkgYmVlbiBkb25lPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4mIzM0O1RoaXMgZG9jdW1lbnQgcHJvdmlkZXMgZ2VuZXJhbCBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgR0RTIEdsb2JhbCBEaWdpdGFsIE1hcmtldHBsYWNlIFByb2dyYW1tZTo8YnI+PGJyPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVljdFN2LW1qYlk5Z1RaeU5MdTVJTXRrbEZOSno4aWlFN054OEF6eEQzV0EvZWRpdD91c3A9c2hhcmluZyIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVljdFN2LW1qYlk5Z1RaeU5MdTVJTXRrbEZOSno4aWlFN054OEF6eEQzV0EvZWRpdD91c3A9c2hhcmluZzwvYT48YnI+PGJyPlJlbGV2YW50IHdvcmsgcGxhbm5lZCwgdW5kZXJ3YXkgb3IgY29tcGxldGVkIGJ5IEdEUyBpbiBJbmRvbmVzaWEsIE1leGljbyBhbmQgU291dGggQWZyaWNhLCB3aWxsIGJlIHNoYXJlZCB3aXRoIHRoZSBzdWNjZXNzZnVsIHN1cHBsaWVyLiYjMzQ7PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+RXhpc3RpbmcgdGVhbTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+JiMzNDtUaGUgR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgUHJvZ3JhbW1lIHRlYW0gY29uc2lzdHMgb2Y6PGJyPjxicj4tRGlyZWN0b3I8YnI+LUhlYWQgb2YgR2xvYmFsIERlbGl2ZXJ5PGJyPi1IZWFkIG9mIFByb2R1Y3Q8YnI+LUhlYWQgb2YgQnVzaW5lc3MgUGFydG5lcnNoaXBzPGJyPi1JbnRlcmltIEhlYWQgb2YgU3VibmF0aW9uYWwgR292ZXJubWVudCBhbmQgVGVjaCBTZWN0b3IgRW5nYWdlbWVudDxicj4tUmVnaW9uYWwgUHJvZHVjdC8gU2VuaW9yIERlbGl2ZXJ5IE1hbmFnZXJzPGJyPi1TdGFuZGFyZHMgQXNzdXJhbmNlIExlYWQ8YnI+LVNraWxscyBhbmQgQ2FwYWJpbGl0eSBMZWFkPGJyPjxicj5UaGUgRkNPIHRlYW0gY29uc2lzdHMgb2Y6PGJyPjxicj4tRGVwdXR5IEhlYWQsIEdBQ1A8YnI+LVByb2plY3QgTWFuYWdlciwgR0FDUDxicj48YnI+VGhlIHN1Y2Nlc3NmdWwgc3VwcGxpZXIgc2hvdWxkIHBsYW4gZm9yIHBvdGVudGlhbGx5IGNvbGxhYm9yYXRpbmcgd2l0aDo8YnI+PGJyPi1HbG9iYWwgRGlnaXRhbCBNYXJrZXRwbGFjZSBQcm9ncmFtbWUgcGFydG5lciBvcmdhbmlzYXRpb25zPGJyPi10ZWFtcyBmcm9tIE5HTyBPcGVuIE93bmVyc2hpcDxicj4tb3RoZXIgc3VjY2Vzc2Z1bCBzdXBwbGllcnMmIzM5OyB0ZWFtcyBzdXBwb3J0aW5nIHJlbGF0ZWQgb3Bwb3J0dW5pdGllcywgZWcgJiMzOTtXUDE4Mjg6IEdsb2JhbCBEaWdpdGFsIE1hcmtldHBsYWNlIGFscGhhIC0gaW1wbGVtZW50aW5nIG9wZW4gY29udHJhY3RpbmcgZGF0YSBpbiBwcm9jdXJlbWVudCBzeXN0ZW1zJiMzOTsgKDxhIGhyZWY9Imh0dHBzOi8vd3d3LmRpZ2l0YWxtYXJrZXRwbGFjZS5zZXJ2aWNlLmdvdi51ay9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy9vcHBvcnR1bml0aWVzLzExMzU4KSYjMzQ7IiBjbGFzcz0iYnJlYWstbGluayIgcmVsPSJleHRlcm5hbCI+aHR0cHM6Ly93d3cuZGlnaXRhbG1hcmtldHBsYWNlLnNlcnZpY2UuZ292LnVrL2RpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzL29wcG9ydHVuaXRpZXMvMTEzNTgpJiMzNDs8L2E+PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+Q3VycmVudCBwaGFzZTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5EaXNjb3Zlcnk8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKICAgIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTMiPgogICAgICAKICAgICAgV29yayBzZXR1cAogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgV29yayBzZXR1cAogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+QWRkcmVzcyB3aGVyZSB0aGUgd29yayB3aWxsIHRha2UgcGxhY2U8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPiYjMzQ7R0RTIGlzIGJhc2VkIGluIHRoZSBXaGl0ZSBDaGFwZWwgQnVpbGRpbmcsIDEwIFdoaXRlY2hhcGVsIEhpZ2ggU3RyZWV0LCBMb25kb24sIEUxIDhRUy48YnI+PGJyPlRoZSBzdWNjZXNzZnVsIHN1cHBsaWVyIHdpbGwgYmUgYWJsZSB0byB3b3JrIHJlbW90ZWx5IGFuZCBkb2VzIG5vdCBoYXZlIHRvIGJlIGJhc2VkIGluIHRoaXMgb2ZmaWNlLCBob3dldmVyIEdEUyBlbmNvdXJhZ2VzIGNvbG9jYXRpb24gd2hlcmUgcG9zc2libGUgKHdoZXRoZXI6IGF0IEdEUywgYXQgdGhlIHN1cHBsaWVyJiMzOTtzIHByZW1pc2VzLCBkdXJpbmcgb3ZlcnNlYXMgbWlzc2lvbnMsIG9yIG90aGVyd2lzZSksIHRha2luZyBhY2NvdW50IG9mIHRoZSBzdGFnZSBvZiBkZWxpdmVyeSwgYW5kIHdoYXQmIzM5O3MgYmVzdCB0byBhY2hpZXZlIHRoZSByZXF1aXJlZCBvdXRjb21lcy48YnI+PGJyPkFueSBjb250YWN0IHdpdGggdGhlIEdsb2JhbCBEaWdpdGFsIE1hcmtldHBsYWNlIFByb2dyYW1tZSwgd2lkZXIgR0RTIHRlYW1zLCBvdGhlciBzdXBwbGllcnMmIzM5OyB0ZWFtcywgZXRjLCBzaG91bGQgcmVmbGVjdCB0aGlzLiYjMzQ7PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+V29ya2luZyBhcnJhbmdlbWVudHM8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPiYjMzQ7SW4gYWRkaXRpb24gdG8gd2hhdCYjMzk7cyBzdGF0ZWQgaW4gdGhlICYjMzk7QWRkcmVzcyB3aGVyZSB0aGUgd29yayB3aWxsIHRha2UgcGxhY2UmIzM5OyBzZWN0aW9uLCB0aHJvdWdob3V0IHRoZSBjb250cmFjdCBwZXJpb2Qgc2hvcnQgaW4tY291bnRyeSB2aXNpdHMgd2lsbCBiZSByZXF1aXJlZCB3aXRoIGdvdmVybm1lbnQvIE5HTyBzdGFrZWhvbGRlcnMgKGZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgJiMzOTtUaGUgY2hhbGxlbmdlcyBhbmQgb3Bwb3J0dW5pdGllcyBvZiB3b3JraW5nIHRvZ2V0aGVyJiMzOTsgc2VjdGlvbiBvZiB0aGlzIEdEUyBibG9nIHBvc3QgLSA8YSBocmVmPSJodHRwczovL2dkcy5ibG9nLmdvdi51ay8yMDE5LzA4LzEyL2VuZ2FnaW5nLXVrLXN1cHBsaWVycy1pbi10aGUtZ2xvYmFsLWRpZ2l0YWwtbWFya2V0cGxhY2UtcHJvZ3JhbW1lLWFscGhhLXBoYXNlKSIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vZ2RzLmJsb2cuZ292LnVrLzIwMTkvMDgvMTIvZW5nYWdpbmctdWstc3VwcGxpZXJzLWluLXRoZS1nbG9iYWwtZGlnaXRhbC1tYXJrZXRwbGFjZS1wcm9ncmFtbWUtYWxwaGEtcGhhc2UpPC9hPi48YnI+PGJyPkdEUyB3aWxsIHNoYXJlIHdpdGggdGhlIHN1Y2Nlc3NmdWwgc3VwcGxpZXIsIGRldGFpbHMgb2YgaW4tY291bnRyeSBzdGFrZWhvbGRlcnMgZnJvbSBnb3Zlcm5tZW50cy8gTkdPcywgYXMgd2VsbCBhcyBmaW5kaW5ncyBmcm9tIG91ciBvd24gZGlzY292ZXJ5IGFuZCBhbHBoYSB3b3JrIHJ1bm5pbmcgcGFyYWxsZWwgdG8gdGhpcyBjb250cmFjdC48YnI+PGJyPkV4cGVuc2VzIHdpbGwgYmUgY2FwcGVkIGF0IHRoZSB3b3JsZHdpZGUgc3Vic2lzdGVuY2UgcmF0ZXMgcHJvdmlkZWQgaW4gdGhlIENhYmluZXQgT2ZmaWNlIGd1aWRhbmNlLiYjMzQ7PC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+U2VjdXJpdHkgY2xlYXJhbmNlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5TZWN1cml0eSBDaGVjayAoU0MpIGNsZWFyYW5jZSBmb3Igc3VwcGxpZXLigJlzIHN0YWZmIHRyYXZlbGxpbmcgb3ZlcnNlYXMsIEJhc2VsaW5lIFBlcnNvbm5lbCBTZWN1cml0eSBTdGFuZGFyZCAoQlBTUykgZm9yIG90aGVyIHN0YWZmLiBJdCBpcyBwcmVmZXJyZWQgdGhhdCB0aGUgc3VwcGxpZXImIzM5O3MgdGVhbSBtZW1iZXJzIGFscmVhZHkgaGF2ZSBzZWN1cml0eSBjbGVhcmFuY2UsIGhvd2V2ZXIgR0RTIGNhbiBzcG9uc29yIHRoZSBzZWN1cml0eSBjbGVhcmFuY2UgcHJvY2Vzcy4gVGhlIGNvc3Qgb2YgdGhlIHByb2Nlc3Mgd2lsbCBiZSBjaGFyZ2VkIHRvIHRoZSBzdXBwbGllci48L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKICAgIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTQiPgogICAgICAKICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbgogIDwvaDI+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbgogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+QWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9uczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+JiMzNDtBbGwgZXhwZW5zZXMgbXVzdCBiZSBwcmUtYWdyZWVkIHdpdGggYmV0d2VlbiB0aGUgcGFydGllcyBhbmQgbXVzdCBjb21wbHkgd2l0aCB0aGUgQ2FiaW5ldCBPZmZpY2UgKENPKSBUcmF2ZWwgYW5kIFN1YnNpc3RlbmNlIChUJmFtcDtTKSBQb2xpY3kuPGJyPjxicj5BbGwgdmVuZG9ycyBhcmUgb2JsaWdlZCB0byBwcm92aWRlIHN1ZmZpY2llbnQgZ3VhcmFudGVlcyB0byBpbXBsZW1lbnQgYXBwcm9wcmlhdGUgdGVjaG5pY2FsIGFuZCBvcmdhbmlzYXRpb25hbCBtZWFzdXJlcyBzbyB0aGF0IHRoZSBwcm9jZXNzaW5nIG1lZXRzIHRoZSByZXF1aXJlbWVudHMgb2YgR0RQUiBhbmQgZW5zdXJlcyB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgcmlnaHRzIG9mIGRhdGEgc3ViamVjdHMuIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdGhlIEluZm9ybWF0aW9uIENvbW1pc3Npb25lciYjMzk7cyBPZmZpY2Ugd2Vic2l0ZTogPGEgaHJlZj0iaHR0cHM6Ly9pY28ub3JnLnVrL2Zvci1vcmdhbmlzYXRpb25zL2RhdGEtcHJvdGVjdGlvbi1yZWZvcm0vb3ZlcnZpZXctb2YtdGhlLWdkcHIvIiBjbGFzcz0iYnJlYWstbGluayIgcmVsPSJleHRlcm5hbCI+aHR0cHM6Ly9pY28ub3JnLnVrL2Zvci1vcmdhbmlzYXRpb25zL2RhdGEtcHJvdGVjdGlvbi1yZWZvcm0vb3ZlcnZpZXctb2YtdGhlLWdkcHIvPC9hPiAmIzM0Ozwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+CiAgCgogICAgPGgyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0taGVhZGluZyIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtNSI+CiAgICAgIAogICAgICBTa2lsbHMgYW5kIGV4cGVyaWVuY2UKICA8L2gyPgogICAgIAogICAgICAgIDxwPjxwIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZGVzY3JpcHRpb24iPgogICAgQnV5ZXJzIHdpbGwgdXNlIHRoZSBlc3NlbnRpYWwgYW5kIG5pY2UtdG8taGF2ZSBza2lsbHMgYW5kIGV4cGVyaWVuY2UgdG8gaGVscCB0aGVtIGV2YWx1YXRlIHN1cHBsaWVyc+KAmSB0ZWNobmljYWwgY29tcGV0ZW5jZS4KICA8L3A+PC9wPgogICAgIAogICAgIAogICAgCiAgICAKICAgIDx0YWJsZSBjbGFzcz0ic3VtbWFyeS1pdGVtLWJvZHkiPgogICAgPGNhcHRpb24gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+CiAgICAgIFNraWxscyBhbmQgZXhwZXJpZW5jZQogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+RXNzZW50aWFsIHNraWxscyBhbmQgZXhwZXJpZW5jZTwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj48dWw+CiAgICAKICAgICAgPGxpPlRlY2huaWNhbCBrbm93bGVkZ2Ugb2YgcmVsZXZhbnQgZGF0YSBzdGFuZGFyZHMgKE9DRFMgYW5kIEJPRFMpLjwvbGk+CiAgICAKICAgICAgPGxpPkluLWRlcHRoIHVuZGVyc3RhbmRpbmcgb2YgY29sbGFib3JhdGl2ZWx5IGRlbGl2ZXJpbmcgcmFwaWQvIGl0ZXJhdGl2ZSBwcm90b3R5cGluZyAobG93IHRvIGhpZ2ggZmlkZWxpdHkpIHVzaW5nIGRlc2lnbiAoc3lzdGVtcyBhbmQgYXBwcm9hY2hlcyksIGRhdGEsIGRhdGEgc3RhbmRhcmRzLCBhbmQgb3RoZXIgcHJvdG90eXBlcy48L2xpPgogICAgCiAgICAgIDxsaT5Jbi1kZXB0aCB1bmRlcnN0YW5kaW5nIG9mIG9wZW4gZGF0YSBzdGFuZGFyZHMgaW4gZ292ZXJubWVudCBjb250ZXh0cyAoZWcgc3VwcG9ydGluZyBtb3JlIG9wZW4gYW5kIHRyYW5zcGFyZW50IGdvdmVybm1lbnQsIHRoZSBiZW5lZml0cyBjYXNlLCBjaXZpbCBzb2NpZXR5IHVzZSBjYXNlcywgZXRjKS48L2xpPgogICAgCiAgICAgIDxsaT5Jbi1kZXB0aCB1bmRlcnN0YW5kaW5nIG9mIG9wZW4gZGF0YSBwcmluY2lwbGVzIGFuZCByZXNlYXJjaCwgdXNlci1jZW50cmVkIHJlc2VhcmNoLCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzLCB0b29scyBhbmQgdGVjaG5pcXVlcyB0aGF0IHN1cHBvcnQgdGhlc2UuPC9saT4KICAgIAogICAgICA8bGk+SW4tZGVwdGggdW5kZXJzdGFuZGluZyBvZiB3b3JraW5nIHdpdGggYW5kIGRlcml2aW5nIHZhbHVlIGZyb20sIG11bHRpcGxlIHN0cnVjdHVyZWQgb3BlbiBkYXRhc2V0cywgbGlua2VkIHRocm91Z2ggQVBJcy48L2xpPgogICAgCiAgPC91bD4KICA8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5OaWNlLXRvLWhhdmUgc2tpbGxzIGFuZCBleHBlcmllbmNlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPjx1bD4KICAgIAogICAgICA8bGk+RXhwZXJpZW5jZSBvZiBkZXZlbG9waW5nIHNlcnZpY2VzIHRoYXQgYWxpZ24gdG8gdGhlIFVLIEdvdmVybm1lbnQgRGVzaWduIFByaW5jaXBsZXMsIFNlcnZpY2UgU3RhbmRhcmQgYW5kIFNlcnZpY2UgTWFudWFsLjwvbGk+CiAgICAKICAgICAgPGxpPkV4cGVyaWVuY2Ugb2Ygd29ya2luZyB3aXRoIG9wZW4gZGF0YSB3aXRoIGRpdmVyc2UgaW50ZXJuYXRpb25hbCBhdWRpZW5jZXMuPC9saT4KICAgIAogICAgICA8bGk+U2VsZi1kaXJlY3RlZCBhbmQgY29tZm9ydGFibGUgdGFraW5nIGRlbGl2ZXJ5IG93bmVyc2hpcCBmb3IgcmVzZWFyY2gsIGFuYWx5c2lzIGFuZCBwcm90b3R5cGUgZGV2ZWxvcG1lbnQuPC9saT4KICAgIAogICAgICA8bGk+S25vd2xlZGdlIG9yIGV4cGVyaWVuY2Ugb2Ygd29ya2luZyB3aXRoaW4gdGhlIEluZG9uZXNpYSwgTWV4aWNvIGFuZCBTb3V0aCBBZnJpY2EuPC9saT4KICAgIAogIDwvdWw+CiAgPC9zcGFuPgogICAgCiAgPC90ZD4KICAKICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgIDwvdGJvZHk+CiAgPC90YWJsZT4KICAKCiAgICA8aDIgY2xhc3M9InN1bW1hcnktaXRlbS1oZWFkaW5nIiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy02Ij4KICAgICAgCiAgICAgIEhvdyBzdXBwbGllcnMgd2lsbCBiZSBldmFsdWF0ZWQKICA8L2gyPgogICAgIAogICAgICAgIDxwPkFsbCBzdXBwbGllcnMgd2lsbCBiZSBhc2tlZCB0byBwcm92aWRlIGEgd3JpdHRlbiBwcm9wb3NhbC48L3A+CiAgICAgCiAgICAKICAgIAogICAgPHRhYmxlIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tYm9keSI+CiAgICA8Y2FwdGlvbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgSG93IHN1cHBsaWVycyB3aWxsIGJlIGV2YWx1YXRlZAogICAgPC9jYXB0aW9uPgogICAgPHRoZWFkIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZ3MiPgogICAgICA8dHI+CiAgICAgICAgCiAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5nLWZpcnN0Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+T3Bwb3J0dW5pdHkgYXR0cmlidXRlIG5hbWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmciPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5PcHBvcnR1bml0eSBhdHRyaWJ1dGUgdmFsdWU8L3NwYW4+CiAgICAgICAgICAgIAogICAgICAgICAgPC90aD4KICAgICAgICAKICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+SG93IG1hbnkgc3VwcGxpZXJzIHRvIGV2YWx1YXRlPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj41PC9zcGFuPgogICAgCiAgPC90ZD4KICAKICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgICAgICAKICAgICAgPHRyIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tcm93Ij4KICAgIAogICAgICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+UHJvcG9zYWwgY3JpdGVyaWE8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+PHVsPgogICAgCiAgICAgIDxsaT5Ib3cgKGJ5IGVuZCAyMDE5LzIwKSB0aGUgcHJvcG9zZWQgc29sdXRpb24gd2lsbCBjb25jdXJyZW50bHk6ICAtc2NvcGUvIHJlc2VhcmNoLyBhbmFseXNlOiB1c2VyIGFuZCBidXNpbmVzcyBuZWVkcywgYW5kIHRoZSBwb2xpY3ksIHJlZ3VsYXRvcnkgYW5kIGRpZ2l0YWwsIGRhdGEgYW5kIHRlY2hub2xvZ3kgY29udGV4dHMuIC1kZXZlbG9wIGxvdyBmaWRlbGl0eSBwcm90b3R5cGVzLjwvbGk+CiAgICAKICAgICAgPGxpPkhvdyAoYnkgMjkgTWF5IDIwMjApIHRoZSBwcm9wb3NlZCBzb2x1dGlvbiwgcmVsYXRpbmcgdG8gR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgUHJvZ3JhbW1lIHdvcmsvIENCTyBpbiBJbmRvbmVzaWEsIE1leGljbyBhbmQgU291dGggQWZyaWNhIGNvbnRleHRzLCB3aWxsIGNvbmN1cnJlbnRseSBkZXZlbG9wIGhpZ2ggZmlkZWxpdHkgcHJvdG90eXBlcy48L2xpPgogICAgCiAgICAgIDxsaT5UZWFtIHN0cnVjdHVyZSBhbmQgb3JnYW5pc2F0aW9uYWwgbWFrZSB1cC48L2xpPgogICAgCiAgICAgIDxsaT5QbGVhc2UgcHJvdmlkZSB3b3JrIGhpc3RvcmllcyBvZiBhbGwgcHJvcG9zZWQgdGVhbSBtZW1iZXJzIC0gdGhlc2Ugd2lsbCBiZSBzY29yZWQgYXMgYSBzZXQuPC9saT4KICAgIAogICAgICA8bGk+VGhvc2Ugc2hvcnRsaXN0ZWQgbXVzdCBiZSBhYmxlIHRvIHByZXNlbnQgLSBkYXRlIHRvIGJlIGNvbmZpcm1lZC48L2xpPgogICAgCiAgPC91bD4KICA8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5DdWx0dXJhbCBmaXQgY3JpdGVyaWE8L3NwYW4+CiAgICAKICA8L3RkPgogICAgICAgIAogICAgICAgICAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZCI+CiAgICAKICAgICAgPHNwYW4+PHVsPgogICAgCiAgICAgIDxsaT5Db2xsYWJvcmF0ZXMgdHJhbnNwYXJlbnRseSBhbmQgY2xvc2VseSB3aXRoIGNvbGxlYWd1ZXMgd2hlbiBtYWtpbmcgZGVjaXNpb25zIGluIHB1cnN1aXQgb2YgbWVldGluZyB1c2VyIG5lZWRzLjwvbGk+CiAgICAKICAgICAgPGxpPkNhbiB3b3JrIHdpdGggc3Rha2Vob2xkZXJzIHdpdGggbG93IHRlY2huaWNhbCBleHBlcnRpc2UuPC9saT4KICAgIAogICAgICA8bGk+V29ya3Mgd2l0aCBHRFMgaW4gYSBzZWxmLXN0YXJ0aW5nIGZhc2hpb24uPC9saT4KICAgIAogICAgICA8bGk+SGFzIHBvbGljaWVzLCBwcm9jZWR1cmVzIG9yIHdvcmtpbmcgcHJhY3RpY2VzIGFuZCBldGhvcyB0aGF0IHN1cHBvcnRzIGdlbmRlciBlcXVhbGl0eSBhbmQgc29jaWFsIGluY2x1c2lvbi48L2xpPgogICAgCiAgPC91bD4KICA8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5QYXltZW50IGFwcHJvYWNoPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQiPgogICAgCiAgICAgIDxzcGFuPkNhcHBlZCB0aW1lIGFuZCBtYXRlcmlhbHM8L3NwYW4+CiAgICAKICA8L3RkPgogIAogICAgICAgIAogICAgICAKICA8L3RyPgogICAgCiAgICAgIAogICAgICAgIAogICAgICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWZpcnN0Ij4KICAgIAogICAgICA8c3Bhbj5BZGRpdGlvbmFsIGFzc2Vzc21lbnQgbWV0aG9kczwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj48dWw+CiAgICAKICAgICAgPGxpPldvcmsgaGlzdG9yeTwvbGk+CiAgICAKICAgICAgPGxpPlByZXNlbnRhdGlvbjwvbGk+CiAgICAKICA8L3VsPgogIDwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgICAgICAgCiAgICAgIAogIDwvdHI+CiAgICAKICAgICAgCiAgICAgICAgCiAgICAgIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgICAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPkV2YWx1YXRpb24gd2VpZ2h0aW5nPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgICAgICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtdWx0aXF1ZXN0aW9uIj4KICAgICAgICAgIDxwPlRlY2huaWNhbCBjb21wZXRlbmNlPC9wPgogICAgICAgICAgPGRpdj43MCU8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGlxdWVzdGlvbiI+CiAgICAgICAgICA8cD5DdWx0dXJhbCBmaXQ8L3A+CiAgICAgICAgICA8ZGl2PjEwJTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAKICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtdWx0aXF1ZXN0aW9uIj4KICAgICAgICAgIDxwPlByaWNlPC9wPgogICAgICAgICAgPGRpdj4yMCU8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9zcGFuPgogICAgCiAgPC90ZD4KICAgICAgICAKICAgICAgCiAgPC90cj4KICAgIAogICAgICAKICAgIDwvdGJvZHk+CiAgPC90YWJsZT4KICAKCiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJncmlkLXJvdyI+CiAgPGRpdiBjbGFzcz0iY29sdW1uLW9uZS13aG9sZSI+CiAgICAKCgogIDxoMiBjbGFzcz0ic3VtbWFyeS1pdGVtLWhlYWRpbmciIGlkPSJxdWVzdGlvbi1hbmQtYW5zd2VyLXNlc3Npb24iPgogICAgICAKICAgICAgUXVlc3Rpb24gYW5kIGFuc3dlciBzZXNzaW9uCiAgPC9oMj4KICA8YSBjbGFzcz0iZ292dWstbGluayIgaHJlZj0iL3N1cHBsaWVycy9vcHBvcnR1bml0aWVzLzExMzcxL3F1ZXN0aW9uLWFuZC1hbnN3ZXItc2Vzc2lvbiI+CiAgICAKICAgICAgTG9nIGluIHRvIHZpZXcgcXVlc3Rpb24gYW5kIGFuc3dlciBzZXNzaW9uIGRldGFpbHMKICAgIAogIDwvYT4KCgo8aDIgY2xhc3M9InN1bW1hcnktaXRlbS1oZWFkaW5nIiBpZD0iY2xhcmlmaWNhdGlvbi1xdWVzdGlvbnMiPgogICAgICAKICAgICAgUXVlc3Rpb25zIGFza2VkIGJ5IHN1cHBsaWVycwogIDwvaDI+CgogICAgCiAgICA8dGFibGUgY2xhc3M9InN1bW1hcnktaXRlbS1ib2R5Ij4KICAgIDxjYXB0aW9uIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPgogICAgICBRdWVzdGlvbnMgYXNrZWQgYnkgc3VwcGxpZXJzCiAgICA8L2NhcHRpb24+CiAgICA8dGhlYWQgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1oZWFkaW5ncyI+CiAgICAgIDx0cj4KICAgICAgICAKICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkLWhlYWRpbmctZmlyc3QiPgogICAgICAgICAgICAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5TdXBwbGllciBxdWVzdGlvbjwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtaGVhZGluZyI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPkJ1eWVyIGFuc3dlcjwvc3Bhbj4KICAgICAgICAgICAgCiAgICAgICAgICA8L3RoPgogICAgICAgIAogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgCiAgICAgIAogICAgICAgIAogIDx0ciBjbGFzcz0ic3VtbWFyeS1pdGVtLXJvdyI+CiAgICAKICAgIAogIDx0ZCAgY2xhc3M9InN1bW1hcnktaXRlbS1maWVsZC1maXJzdCI+CiAgICAKICAgICAgPHNwYW4+PHNwYW4gYXJpYS1sYWJlbD0icXVlc3Rpb24iPjEuPC9zcGFuPgogICAgICBTb21lIG9mIHRoZSBsaW5rcyBwcm92aWRlZCBpbiB0aGUgb3Bwb3J0dW5pdHkgYXJlIGJyb2tlbj88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5VbmRlciAmIzM5O1doeSB0aGUgd29yayBpcyBiZWluZyBkb25lJiMzOTsgLSBjb3JyZWN0IGxpbmsgdG8gdGhlIE9wZW5Pd25lcnNoaXAgUmVnaXN0ZXIgaXMgPGEgaHJlZj0iaHR0cHM6Ly9yZWdpc3Rlci5vcGVub3duZXJzaGlwLm9yZy8iIGNsYXNzPSJicmVhay1saW5rIiByZWw9ImV4dGVybmFsIj5odHRwczovL3JlZ2lzdGVyLm9wZW5vd25lcnNoaXAub3JnLzwvYT4uIFVuZGVyICYjMzk7UHJvYmxlbSB0byBiZSBzb2x2ZWQmIzM5OyAtIGNvcnJlY3QgbGluayB0byB0aGUgV29ybGQgQmFuay8gVU5PREMgJiMzOTtTdEFSJiMzOTsgcmVwb3J0IHRpdGxlZCAmIzM5O1RoZSBQdXBwZXQgTWFzdGVyczogSG93IHRoZSBDb3JydXB0IFVzZSBMZWdhbCBTdHJ1Y3R1cmVzIHRvIEhpZGUgU3RvbGVuIEFzc2V0cyBhbmQgV2hhdCB0byBEbyBBYm91dCBJdCYjMzk7IGlzIDxhIGhyZWY9Imh0dHBzOi8vc3Rhci53b3JsZGJhbmsub3JnL3B1YmxpY2F0aW9uL3B1cHBldC1tYXN0ZXJzIiBjbGFzcz0iYnJlYWstbGluayIgcmVsPSJleHRlcm5hbCI+aHR0cHM6Ly9zdGFyLndvcmxkYmFuay5vcmcvcHVibGljYXRpb24vcHVwcGV0LW1hc3RlcnM8L2E+LiBVbmRlciAmIzM5O0V4aXN0aW5nIHRlYW0mIzM5OyAtIGNvcnJlY3QgbGluayB0byB0aGUgRGlnaXRhbCBNYXJrZXRwbGFjZSBvcHBvcnR1bml0eSAmIzM5O1dQMTgyODogR2xvYmFsIERpZ2l0YWwgTWFya2V0cGxhY2UgYWxwaGEgLSBpbXBsZW1lbnRpbmcgb3BlbiBjb250cmFjdGluZyBkYXRhIGluIHByb2N1cmVtZW50IHN5c3RlbXMmIzM5OyBpcyA8YSBocmVmPSJodHRwczovL3d3dy5kaWdpdGFsbWFya2V0cGxhY2Uuc2VydmljZS5nb3YudWsvZGlnaXRhbC1vdXRjb21lcy1hbmQtc3BlY2lhbGlzdHMvb3Bwb3J0dW5pdGllcy8xMTM1OCIgY2xhc3M9ImJyZWFrLWxpbmsiIHJlbD0iZXh0ZXJuYWwiPmh0dHBzOi8vd3d3LmRpZ2l0YWxtYXJrZXRwbGFjZS5zZXJ2aWNlLmdvdi51ay9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy9vcHBvcnR1bml0aWVzLzExMzU4PC9hPi48L3NwYW4+CiAgICAKICA8L3RkPgogIAogIDwvdHI+CgogICAgICAKICAgICAgICAKICA8dHIgY2xhc3M9InN1bW1hcnktaXRlbS1yb3ciPgogICAgCiAgICAKICA8dGQgIGNsYXNzPSJzdW1tYXJ5LWl0ZW0tZmllbGQtZmlyc3QiPgogICAgCiAgICAgIDxzcGFuPjxzcGFuIGFyaWEtbGFiZWw9InF1ZXN0aW9uIj4yLjwvc3Bhbj4KICAgICAgVW5kZXIgJiMzOTtXaHkgdGhlIHdvcmsgaXMgYmVpbmcgZG9uZSYjMzk7IHlvdSBzdGF0ZSB0aGF0IOKAmFN0YWdlIDHigJkgZGVsaXZlcmFibGVzIGFyZSByZXF1aXJlZCBieSAwMyBBcHJpbCAyMDIwLCBob3dldmVyIHVuZGVyICYjMzk7UHJvcG9zYWwgY3JpdGVyaWEmIzM5OyB5b3Ugc3RhdGUgJiMzOTtieSBlbmQgMjAxOS8yMCYjMzk7LiBQbGVhc2UgY2xhcmlmeT88L3NwYW4+CiAgICAKICA8L3RkPgogICAgCiAgPHRkICBjbGFzcz0ic3VtbWFyeS1pdGVtLWZpZWxkIj4KICAgIAogICAgICA8c3Bhbj5QbGVhc2UgZGlzcmVnYXJkIHRoZSAwMyBBcHJpbCAyMDIwIGRhdGUgYW5kIGFzc3VtZSAzMSBNYXJjaCAyMDIwLiBBY3R1YWwgMjAxOS8yMCB5ZWFyIGVuZCBkYXRlIHdpbGwgYmUgY29uZmlybWVkIHRvIHRoZSBzdWNjZXNzZnVsIHN1cHBsaWVyLjwvc3Bhbj4KICAgIAogIDwvdGQ+CiAgCiAgPC90cj4KCiAgICAgIAogICAgPC90Ym9keT4KICA8L3RhYmxlPgogIAoKCiAgPGEgY2xhc3M9ImdvdnVrLWxpbmsiIGhyZWY9Ii9zdXBwbGllcnMvb3Bwb3J0dW5pdGllcy8xMTM3MS9hc2stYS1xdWVzdGlvbiI+CiAgICAKICAgICAgTG9nIGluIHRvIGFzayBhIHF1ZXN0aW9uCiAgICAKICA8L2E+CgogIDwvZGl2Pgo8L2Rpdj4KCgogIDxici8+PCEtLSA8LSByZW1vdmUgb25jZSBncmlkIGFuZCBib2R5IGVsZW1lbnRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gZ292dWsgZnJvbnRlbmQgLS0+CiAgPGRpdiBjbGFzcz0iZ3JpZC1yb3ciPgogICAgPGRpdiBjbGFzcz0iY29sdW1uLXR3by10aGlyZHMiPgogICAgICA8Zm9ybSBhY3Rpb249Ii9zdXBwbGllcnMvb3Bwb3J0dW5pdGllcy8xMTM3MS9yZXNwb25zZXMvc3RhcnQiIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAKICAKICAgIAogIAoKPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJnb3Z1ay1idXR0b24iPgogIEFwcGx5IGZvciB0aGlzIG9wcG9ydHVuaXR5CjwvYnV0dG9uPgogICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCgoKICAgIDwvbWFpbj4KICA8L2Rpdj4KCgogICAgPGZvb3RlciBjbGFzcz0iZ3JvdXAganMtZm9vdGVyIiBpZD0iZm9vdGVyIiByb2xlPSJjb250ZW50aW5mbyI+CgogICAgICA8ZGl2IGNsYXNzPSJmb290ZXItd3JhcHBlciI+CiAgICAgICAgCiAgPGRpdiBjbGFzcz0iZm9vdGVyLWNhdGVnb3JpZXMiPgogIDxkaXYgY2xhc3M9ImZvb3Rlci1hYm91dCI+CiAgICA8aDI+CiAgICAgIENvbnRhY3QKICAgIDwvaDI+CiAgICA8dWw+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIvaGVscCI+RGlnaXRhbCBNYXJrZXRwbGFjZSBoZWxwPC9hPgogICAgICA8L2xpPgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmb290ZXItYnV5ZXJzIj4KICAgIDxoMj4KICAgICAgQWJvdXQgdGhlIERpZ2l0YWwgTWFya2V0cGxhY2UKICAgIDwvaDI+CiAgICA8dWw+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZGlnaXRhbC1tYXJrZXRwbGFjZS1idXllcnMtZ3VpZGUiPlNlcnZpY2VzIHlvdSBjYW4gYnV5PC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtbWFya2V0cGxhY2Utc3VwcGxpZXJzLWd1aWRlIj5TZXJ2aWNlcyB5b3UgY2FuIHNlbGw8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2Nyb3duLWNvbW1lcmNpYWwtc2VydmljZSI+QWJvdXQgQ3Jvd24gQ29tbWVyY2lhbCBTZXJ2aWNlPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvb3JnYW5pc2F0aW9ucy9nb3Zlcm5tZW50LWRpZ2l0YWwtc2VydmljZSI+QWJvdXQgR292ZXJubWVudCBEaWdpdGFsIFNlcnZpY2U8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIvZy1jbG91ZC9zdXBwbGllcnMiPkctQ2xvdWQgc3VwcGxpZXIgQeKAk1o8L2E+CiAgICAgIDwvbGk+CiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZvb3Rlci1zdXBwbGllcnMiPgogICAgPGgyPgogICAgICAgIEd1aWRhbmNlCiAgICA8L2gyPgogICAgPHVsPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtc3VwcGxpZXJzLWd1aWRlIj5BcHBseWluZyB0byBzZWxsIG9uIHRoZSBHLUNsb3VkIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zdXBwbGllcnMtZ3VpZGUiPkFwcGx5aW5nIHRvIHNlbGwgb24gdGhlIERpZ2l0YWwgT3V0Y29tZXMgYW5kIFNwZWNpYWxpc3RzIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9ob3ctdG8tc2VsbC15b3VyLWRpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzLXNlcnZpY2VzIj5SZXNwb25kaW5nIHRvIGJ1eWVyIHJlcXVpcmVtZW50cyBvbiB0aGUgRGlnaXRhbCBPdXRjb21lcyBhbmQgU3BlY2lhbGlzdHMgZnJhbWV3b3JrPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtYnV5ZXJzLWd1aWRlIj5CdXlpbmcgb24gdGhlIEctQ2xvdWQgZnJhbWV3b3JrPC9hPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzLWJ1eWVycy1ndWlkZSI+QnV5aW5nIG9uIHRoZSBEaWdpdGFsIE91dGNvbWVzIGFuZCBTcGVjaWFsaXN0cyBmcmFtZXdvcms8L2E+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvdGhlLWNyb3duLWhvc3RpbmctZGF0YS1jZW50cmVzLWZyYW1ld29yay1vbi10aGUtZGlnaXRhbC1tYXJrZXRwbGFjZSI+QnV5aW5nIG9uIHRoZSBDcm93biBIb3N0aW5nIGZyYW1ld29yazwvYT4KICAgICAgPC9saT4KICAgIDwvdWw+CiAgPC9kaXY+CiAgPGhyLz4KPC9kaXY+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWV0YSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWV0YS1pbm5lciI+CiAgICAgICAgICAgIAogICAgPGgyIGNsYXNzPSJ2aXN1YWxseWhpZGRlbiI+U3VwcG9ydCBsaW5rczwvaDI+CiAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii90ZXJtcy1hbmQtY29uZGl0aW9ucyIgY2xhc3M9InRlcm1zLWFuZC1jb25kaXRpb25zIj5UZXJtcyBhbmQgY29uZGl0aW9uczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvY29va2llcyI+Q29va2llczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvcHJpdmFjeS1ub3RpY2UiPlByaXZhY3kgbm90aWNlPC9hPjwvbGk+CiAgICAgICAgPGxpPkJ1aWx0IGJ5IHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIj5Hb3Zlcm5tZW50IERpZ2l0YWwgU2VydmljZTwvYT48L2xpPgogICAgPC91bD4KCgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcGVuLWdvdmVybm1lbnQtbGljZW5jZSI+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImxvZ28iPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5hdGlvbmFsYXJjaGl2ZXMuZ292LnVrL2RvYy9vcGVuLWdvdmVybm1lbnQtbGljZW5jZS92ZXJzaW9uLzMvIiByZWw9ImxpY2Vuc2UiPk9wZW4gR292ZXJubWVudCBMaWNlbmNlPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwPkFsbCBjb250ZW50IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cubmF0aW9uYWxhcmNoaXZlcy5nb3YudWsvZG9jL29wZW4tZ292ZXJubWVudC1saWNlbmNlL3ZlcnNpb24vMy8iIHJlbD0ibGljZW5zZSI+T3BlbiBHb3Zlcm5tZW50IExpY2VuY2UgdjMuMDwvYT4sIGV4Y2VwdCB3aGVyZSBvdGhlcndpc2Ugc3RhdGVkPC9wPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcHlyaWdodCI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubmF0aW9uYWxhcmNoaXZlcy5nb3YudWsvaW5mb3JtYXRpb24tbWFuYWdlbWVudC9yZS11c2luZy1wdWJsaWMtc2VjdG9yLWluZm9ybWF0aW9uL2NvcHlyaWdodC1hbmQtcmUtdXNlL2Nyb3duLWNvcHlyaWdodC8iPiZjb3B5OyBDcm93biBjb3B5cmlnaHQ8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCiAgICA8ZGl2IGlkPSJnbG9iYWwtYXBwLWVycm9yIiBjbGFzcz0iYXBwLWVycm9yIGhpZGRlbiI+PC9kaXY+CgogICAgPHNjcmlwdCBzcmM9Ii9zdGF0aWMvamF2YXNjcmlwdHMvZ292dWstdGVtcGxhdGUuanM/MC4xOS4yIj48L3NjcmlwdD4KCiAgICAKICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc3RhdGljL2phdmFzY3JpcHRzL2FwcGxpY2F0aW9uLmpzP2Y4NGJlYTEzMWJiODhjY2JhOGQ5YWRkMDQ0N2I5NTRiIj48L3NjcmlwdD4KICAKCgogICAgCiAgICA8c2NyaXB0PmlmICh0eXBlb2Ygd2luZG93LkdPVlVLID09PSAndW5kZWZpbmVkJykgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5yZXBsYWNlKCdqcy1lbmFibGVkJywgJycpOzwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPg==
77
+ CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiIgY2xhc3M9ImdvdnVrLXRlbXBsYXRlICI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KICAgIDx0aXRsZT4KICBEZXZlbG9wZXIgLSBMYXcgRW5mb3JjZW1lbnQgYW5kIFNlY3VyaXR5IGZvciBEYXRhIFNlcnZpY2VzICZhbXA7IEFuYWx5dGljcyAoMi8yKSAtIERpZ2l0YWwgTWFya2V0cGxhY2UKPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQtZml0PWNvdmVyIj4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMGIwYzBjIiAvPiAKICAgIAogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIiAvPgoKICAgIAogICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHNpemVzPSIxNngxNiAzMngzMiA0OHg0OCIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZmF2aWNvbi5pY28iIHR5cGU9ImltYWdlL3gtaWNvbiIgLz4KICAgICAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2dvdnVrLW1hc2staWNvbi5zdmciIGNvbG9yPSIjMGIwYzBjIj4gCiAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2dvdnVrLWFwcGxlLXRvdWNoLWljb24tMTgweDE4MC5wbmciPgogICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxNjd4MTY3IiBocmVmPSIvc3RhdGljL2ltYWdlcy9nb3Z1ay1hcHBsZS10b3VjaC1pY29uLTE2N3gxNjcucG5nIj4KICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTUyeDE1MiIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZ292dWstYXBwbGUtdG91Y2gtaWNvbi0xNTJ4MTUyLnBuZyI+CiAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iL3N0YXRpYy9pbWFnZXMvZ292dWstYXBwbGUtdG91Y2gtaWNvbi5wbmciPgogICAgCgogICAgCiAgCgoKCgoKCgoKICAKICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IlRLR1NHWm5mSHB4MS1sS090aEkxN0FOdHdrN2Z6M0Y0U2JyNzdJMHBwTzAiPgoKICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3RhdGljL3N0eWxlc2hlZXRzL2FwcGxpY2F0aW9uLmNzcz82Zjk3MWI0ZDdmNTNhMmU4MTY2YjNlNmE0OTdmOGYwYyIgLz4KICAKCiAgICAKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSIvc3RhdGljL2ltYWdlcy9nb3Z1ay1vcGVuZ3JhcGgtaW1hZ2UucG5nIj4KICA8L2hlYWQ+CiAgPGJvZHkgY2xhc3M9ImdvdnVrLXRlbXBsYXRlX19ib2R5ICI+CiAgICA8c2NyaXB0PmRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgPyBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcganMtZW5hYmxlZCcgOiAnanMtZW5hYmxlZCcpOzwvc2NyaXB0PgogICAgCgogICAgCiAgICAgIDxhIGhyZWY9IiNtYWluLWNvbnRlbnQiIGNsYXNzPSJnb3Z1ay1za2lwLWxpbmsiPlNraXAgdG8gbWFpbiBjb250ZW50PC9hPgogICAgCgogICAgCiAgCiAgCgoKCgo8ZGl2IGlkPSJkbS1jb29raWUtYmFubmVyIiBjbGFzcz0iZG0tY29va2llLWJhbm5lciBnb3Z1ay13aWR0aC1jb250YWluZXIiIGRhdGEtbW9kdWxlPSJkbS1jb29raWUtYmFubmVyIiByb2xlPSJyZWdpb24iIGFyaWEtZGVzY3JpYmVkYnk9ImRtLWNvb2tpZS1iYW5uZXJfX2hlYWRpbmciPgogIDxkaXYgY2xhc3M9ImRtLWNvb2tpZS1iYW5uZXJfX3dyYXBwZXIiPgogICAgPGgyIGNsYXNzPSJkbS1jb29raWUtYmFubmVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbSIgaWQ9ImRtLWNvb2tpZS1iYW5uZXJfX2hlYWRpbmciPgogICAgICBDYW4gd2Ugc3RvcmUgYW5hbHl0aWNzIGNvb2tpZXMgb24geW91ciBkZXZpY2U/CiAgICA8L2gyPgogICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkiPgogICAgICBBbmFseXRpY3MgY29va2llcyBoZWxwIHVzIHVuZGVyc3RhbmQgaG93IG91ciB3ZWJzaXRlIGlzIGJlaW5nIHVzZWQuCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJkbS1jb29raWUtYmFubmVyX19idXR0b25zIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZ292dWstYnV0dG9uIGRtLWNvb2tpZS1iYW5uZXJfX2J1dHRvbiBkbS1jb29raWUtYmFubmVyX19idXR0b24tLWFjY2VwdCIgdHlwZT0ic3VibWl0IiBkYXRhLWFjY2VwdC1jb29raWVzPSJ0cnVlIiBhcmlhLWRlc2NyaWJlZGJ5PSJkbS1jb29raWUtYmFubmVyX19oZWFkaW5nIj4KICAgICAgICBZZXM8c3BhbiBjbGFzcz0iZ292dWstdmlzdWFsbHktaGlkZGVuIj4sIERpZ2l0YWwgTWFya2V0cGxhY2UgY2FuIHN0b3JlIGFuYWx5dGljcyBjb29raWVzIG9uIHlvdXIgZGV2aWNlPC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZ292dWstYnV0dG9uIGRtLWNvb2tpZS1iYW5uZXJfX2J1dHRvbiBkbS1jb29raWUtYmFubmVyX19idXR0b24tLXJlamVjdCIgdHlwZT0ic3VibWl0IiBkYXRhLWFjY2VwdC1jb29raWVzPSJmYWxzZSIgYXJpYS1kZXNjcmliZWRieT0iZG0tY29va2llLWJhbm5lcl9faGVhZGluZyI+CiAgICAgICAgTm88c3BhbiBjbGFzcz0iZ292dWstdmlzdWFsbHktaGlkZGVuIj4sIERpZ2l0YWwgTWFya2V0cGxhY2UgY2Fubm90IHN0b3JlIGFuYWx5dGljcyBjb29raWVzIG9uIHlvdXIgZGV2aWNlPC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgPGEgY2xhc3M9ImdvdnVrLWxpbmsgZG0tY29va2llLWJhbm5lcl9fbGluayIgaHJlZj0iL2Nvb2tpZXMiPkhvdyBEaWdpdGFsIE1hcmtldHBsYWNlIHVzZXMgY29va2llczwvYT4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJkbS1jb29raWUtYmFubmVyX19jb25maXJtYXRpb24iIHRhYmluZGV4PSItMSI+CiAgICA8cCBjbGFzcz0iZG0tY29va2llLWJhbm5lcl9fY29uZmlybWF0aW9uLW1lc3NhZ2UgZ292dWstYm9keSI+CiAgICAgIFlvdSBjYW4gPGEgY2xhc3M9ImdvdnVrLWxpbmsiIGhyZWY9Ii91c2VyL2Nvb2tpZS1zZXR0aW5ncyI+Y2hhbmdlIHlvdXIgY29va2llIHNldHRpbmdzPC9hPiBhdCBhbnkgdGltZS4KICAgIDwvcD4KICAgIDxidXR0b24gY2xhc3M9ImRtLWNvb2tpZS1iYW5uZXJfX2hpZGUtYnV0dG9uIGdvdnVrLWxpbmsiIGRhdGEtaGlkZS1jb29raWUtYmFubmVyPSJ0cnVlIiByb2xlPSJsaW5rIj5IaWRlPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKICAKCgoKCgogIAogIAoKCgogIAoKPGhlYWRlciBjbGFzcz0iZ292dWstaGVhZGVyICIgcm9sZT0iYmFubmVyIiBkYXRhLW1vZHVsZT0iaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2NvbnRhaW5lciBnb3Z1ay13aWR0aC1jb250YWluZXIiPgoKICAgIDxkaXYgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbG9nbyI+CiAgICAgIDxhIGhyZWY9Ii8iIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xpbmsgZ292dWstaGVhZGVyX19saW5rLS1ob21lcGFnZSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImdvdnVrLWhlYWRlcl9fbG9nb3R5cGUiPgogICAgICAgICAgCiAgICAgICAgICA8c3ZnCiAgICAgICAgICAgIHJvbGU9InByZXNlbnRhdGlvbiIKICAgICAgICAgICAgZm9jdXNhYmxlPSJmYWxzZSIKICAgICAgICAgICAgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbG9nb3R5cGUtY3Jvd24iCiAgICAgICAgICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgICAgICAgICAgdmlld2JveD0iMCAwIDEzMiA5NyIKICAgICAgICAgICAgaGVpZ2h0PSIzMiIKICAgICAgICAgICAgd2lkdGg9IjM2IgogICAgICAgICAgPgogICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRDb2xvciIgZmlsbC1ydWxlPSJldmVub2RkIgogICAgICAgICAgICAgIGQ9Ik0yNSAzMC4yYzMuNSAxLjUgNy43LS4yIDkuMS0zLjcgMS41LTMuNi0uMi03LjgtMy45LTkuMi0zLjYtMS40LTcuNi4zLTkuMSAzLjktMS40IDMuNS4zIDcuNSAzLjkgOXpNOSAzOS41YzMuNiAxLjUgNy44LS4yIDkuMi0zLjcgMS41LTMuNi0uMi03LjgtMy45LTkuMS0zLjYtMS41LTcuNi4yLTkuMSAzLjgtMS40IDMuNS4zIDcuNSAzLjggOXpNNC40IDU3LjJjMy41IDEuNSA3LjctLjIgOS4xLTMuOCAxLjUtMy42LS4yLTcuNy0zLjktOS4xLTMuNS0xLjUtNy42LjMtOS4xIDMuOC0xLjQgMy41LjMgNy42IDMuOSA5LjF6bTM4LjMtMjEuNGMzLjUgMS41IDcuNy0uMiA5LjEtMy44IDEuNS0zLjYtLjItNy43LTMuOS05LjEtMy42LTEuNS03LjYuMy05LjEgMy44LTEuMyAzLjYuNCA3LjcgMy45IDkuMXptNjQuNC01LjZjLTMuNiAxLjUtNy44LS4yLTkuMS0zLjctMS41LTMuNi4yLTcuOCAzLjgtOS4yIDMuNi0xLjQgNy43LjMgOS4yIDMuOSAxLjMgMy41LS40IDcuNS0zLjkgOXptMTUuOSA5LjNjLTMuNiAxLjUtNy43LS4yLTkuMS0zLjctMS41LTMuNi4yLTcuOCAzLjctOS4xIDMuNi0xLjUgNy43LjIgOS4yIDMuOCAxLjUgMy41LS4zIDcuNS0zLjggOXptNC43IDE3LjdjLTMuNiAxLjUtNy44LS4yLTkuMi0zLjgtMS41LTMuNi4yLTcuNyAzLjktOS4xIDMuNi0xLjUgNy43LjMgOS4yIDMuOCAxLjMgMy41LS40IDcuNi0zLjkgOS4xek04OS4zIDM1LjhjLTMuNiAxLjUtNy44LS4yLTkuMi0zLjgtMS40LTMuNi4yLTcuNyAzLjktOS4xIDMuNi0xLjUgNy43LjMgOS4yIDMuOCAxLjQgMy42LS4zIDcuNy0zLjkgOS4xek02OS43IDE3LjdsOC45IDQuN1Y5LjNsLTguOSAyLjhjLS4yLS4zLS41LS42LS45LS45TDcyLjQgMEg1OS42bDMuNSAxMS4yYy0uMy4zLS42LjUtLjkuOWwtOC44LTIuOHYxMy4xbDguOC00LjdjLjMuMy42LjcuOS45bC01IDE1LjR2LjFjLS4yLjgtLjQgMS42LS40IDIuNCAwIDQuMSAzLjEgNy41IDcgOC4xaC4yYy4zIDAgLjcuMSAxIC4xLjQgMCAuNyAwIDEtLjFoLjJjNC0uNiA3LjEtNC4xIDcuMS04LjEgMC0uOC0uMS0xLjctLjQtMi40VjM0bC01LjEtMTUuNGMuNC0uMi43LS42IDEtLjl6TTY2IDkyLjhjMTYuOSAwIDMyLjggMS4xIDQ3LjEgMy4yIDQtMTYuOSA4LjktMjYuNyAxNC0zMy41bC05LjYtMy40YzEgNC45IDEuMSA3LjIgMCAxMC4yLTEuNS0xLjQtMy00LjMtNC4yLTguN0wxMDguNiA3NmMyLjgtMiA1LTMuMiA3LjUtMy4zLTQuNCA5LjQtMTAgMTEuOS0xMy42IDExLjItNC4zLS44LTYuMy00LjYtNS42LTcuOSAxLTQuNyA1LjctNS45IDgtLjUgNC4zLTguNy0zLTExLjQtNy42LTguOCA3LjEtNy4yIDcuOS0xMy41IDIuMS0yMS4xLTggNi4xLTguMSAxMi4zLTQuNSAyMC44LTQuNy01LjQtMTIuMS0yLjUtOS41IDYuMiAzLjQtNS4yIDcuOS0yIDcuMiAzLjEtLjYgNC4zLTYuNCA3LjgtMTMuNSA3LjItMTAuMy0uOS0xMC45LTgtMTEuMi0xMy44IDIuNS0uNSA3LjEgMS44IDExIDcuM0w4MC4yIDYwYy00LjEgNC40LTggNS4zLTEyLjMgNS40IDEuNC00LjQgOC0xMS42IDgtMTEuNkg1NS41czYuNCA3LjIgNy45IDExLjZjLTQuMi0uMS04LTEtMTIuMy01LjRsMS40IDE2LjRjMy45LTUuNSA4LjUtNy43IDEwLjktNy4zLS4zIDUuOC0uOSAxMi44LTExLjEgMTMuOC03LjIuNi0xMi45LTIuOS0xMy41LTcuMi0uNy01IDMuOC04LjMgNy4xLTMuMSAyLjctOC43LTQuNi0xMS42LTkuNC02LjIgMy43LTguNSAzLjYtMTQuNy00LjYtMjAuOC01LjggNy42LTUgMTMuOSAyLjIgMjEuMS00LjctMi42LTExLjkuMS03LjcgOC44IDIuMy01LjUgNy4xLTQuMiA4LjEuNS43IDMuMy0xLjMgNy4xLTUuNyA3LjktMy41LjctOS0xLjgtMTMuNS0xMS4yIDIuNS4xIDQuNyAxLjMgNy41IDMuM2wtNC43LTE1LjRjLTEuMiA0LjQtMi43IDcuMi00LjMgOC43LTEuMS0zLS45LTUuMyAwLTEwLjJsLTkuNSAzLjRjNSA2LjkgOS45IDE2LjcgMTQgMzMuNSAxNC44LTIuMSAzMC44LTMuMiA0Ny43LTMuMnoiCiAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aW1hZ2Ugc3JjPSIvYXNzZXRzL2ltYWdlcy9nb3Z1ay1sb2dvdHlwZS1jcm93bi5wbmciIHhsaW5rOmhyZWY9IiIgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbG9nb3R5cGUtY3Jvd24tZmFsbGJhY2staW1hZ2UiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzMiI+PC9pbWFnZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImdvdnVrLWhlYWRlcl9fbG9nb3R5cGUtdGV4dCI+CiAgICAgICAgICAgIEdPVi5VSwogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgICAKICAgICAgICA8c3BhbiBjbGFzcz0iZ292dWstaGVhZGVyX19wcm9kdWN0LW5hbWUiPgogICAgICAgICAgRGlnaXRhbCBNYXJrZXRwbGFjZQogICAgICAgIDwvc3Bhbj4KICAgICAgICAKICAgICAgPC9hPgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLWhlYWRlcl9fY29udGVudCI+CgogICAgCgogICAgCiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgcm9sZT0iYnV0dG9uIiBjbGFzcz0iZ292dWstaGVhZGVyX19tZW51LWJ1dHRvbiBqcy1oZWFkZXItdG9nZ2xlIiBhcmlhLWNvbnRyb2xzPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJTaG93IG9yIGhpZGUgVG9wIExldmVsIE5hdmlnYXRpb24iPk1lbnU8L2J1dHRvbj4KICAgIDxuYXY+CiAgICAgIDx1bCBpZD0ibmF2aWdhdGlvbiIgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbmF2aWdhdGlvbiAiIGFyaWEtbGFiZWw9IlRvcCBMZXZlbCBOYXZpZ2F0aW9uIj4KICAgICAgICAKICAgICAgICAgIAogICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbmF2aWdhdGlvbi1pdGVtIj4KICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstaGVhZGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvYnV5aW5nLWFuZC1zZWxsaW5nLW9uLXRoZS1kaWdpdGFsLW1hcmtldHBsYWNlIj4KICAgICAgICAgICAgICAgIEd1aWRhbmNlCiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX25hdmlnYXRpb24taXRlbSI+CiAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWhlYWRlcl9fbGluayIgaHJlZj0iL2hlbHAiPgogICAgICAgICAgICAgICAgSGVscAogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstaGVhZGVyX19uYXZpZ2F0aW9uLWl0ZW0iPgogICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1oZWFkZXJfX2xpbmsiIGhyZWY9Ii91c2VyL2xvZ2luIj4KICAgICAgICAgICAgICAgIExvZyBpbgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIAogICAgICAgIAogICAgICA8L3VsPgogICAgPC9uYXY+CiAgICAKICAgIDwvZGl2PgogICAgCiAgPC9kaXY+CjwvaGVhZGVyPgoKCiAgICAKICAgICAgPGRpdiBjbGFzcz0iZ292dWstd2lkdGgtY29udGFpbmVyIj4KICAgICAgICAKICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXBoYXNlLWJhbm5lciI+CiAgPHAgY2xhc3M9ImdvdnVrLXBoYXNlLWJhbm5lcl9fY29udGVudCI+PHN0cm9uZyBjbGFzcz0iZ292dWstdGFnIGdvdnVrLXBoYXNlLWJhbm5lcl9fY29udGVudF9fdGFnICI+CiAgYmV0YQo8L3N0cm9uZz48c3BhbiBjbGFzcz0iZ292dWstcGhhc2UtYmFubmVyX190ZXh0Ij4KICAgICAgSGVscCB1cyBpbXByb3ZlIHRoZSBEaWdpdGFsIE1hcmtldHBsYWNlIC0gPGEgY2xhc3M9ImdvdnVrLWxpbmsiIGhyZWY9Ii9oZWxwIj5zZW5kIHlvdXIgZmVlZGJhY2s8L2E+CiAgICA8L3NwYW4+CiAgPC9wPgo8L2Rpdj4KICAKICAKPGRpdiBjbGFzcz0iZ292dWstYnJlYWRjcnVtYnMiPgogIDxvbCBjbGFzcz0iZ292dWstYnJlYWRjcnVtYnNfX2xpc3QiPgogIAogICAgCiAgICA8bGkgY2xhc3M9ImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW0iPgogICAgICA8YSBjbGFzcz0iZ292dWstYnJlYWRjcnVtYnNfX2xpbmsiIGhyZWY9Ii8iPkRpZ2l0YWwgTWFya2V0cGxhY2U8L2E+CiAgICA8L2xpPgogICAgCiAgCiAgICAKICAgIDxsaSBjbGFzcz0iZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbSI+CiAgICAgIDxhIGNsYXNzPSJnb3Z1ay1icmVhZGNydW1ic19fbGluayIgaHJlZj0iL2RpZ2l0YWwtb3V0Y29tZXMtYW5kLXNwZWNpYWxpc3RzL29wcG9ydHVuaXRpZXMiPlN1cHBsaWVyIG9wcG9ydHVuaXRpZXM8L2E+CiAgICA8L2xpPgogICAgCiAgCiAgPC9vbD4KPC9kaXY+CgoKICAgICAgICA8bWFpbiBjbGFzcz0iZ292dWstbWFpbi13cmFwcGVyICIgaWQ9Im1haW4tY29udGVudCIgcm9sZT0ibWFpbiI+CiAgICAgICAgICAKICAKICAKCiAgCiAgICAKICAKICAKCgoKPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMiPgogICAgPHNwYW4gY2xhc3M9ImdvdnVrLWNhcHRpb24tbCI+RGF0YSBTZXJ2aWNlIGFuZCBBbmFseXRpY3MgKERTQSksIEhvbWUgT2ZmaWNlPC9zcGFuPgogICAgPGgxIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLWwiPkRldmVsb3BlciAtIExhdyBFbmZvcmNlbWVudCBhbmQgU2VjdXJpdHkgZm9yIERhdGEgU2VydmljZXMgJmFtcDsgQW5hbHl0aWNzICgyLzIpPC9oMT4KICAgIDxzcGFuIGRhdGEtbG90PSJkaWdpdGFsLXNwZWNpYWxpc3RzIj48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3cgZ292dWstIS1tYXJnaW4tYm90dG9tLTkiPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLW9uZS10aGlyZCBhcHAtc3RhdC1ibG9jayIgaWQ9ImluY29tcGxldGUtYXBwbGljYXRpb25zIj4KICAgPGgyPgogICAgICA8c3BhbiBjbGFzcz0iZ292dWstIS1mb250LXNpemUtMzYgZ292dWstIS1kaXNwbGF5LWJsb2NrIj4xPC9zcGFuPgogICAgICA8c3Bhbj5JbmNvbXBsZXRlIGFwcGxpY2F0aW9uPC9zcGFuPgogICA8L2gyPgogICA8cCBjbGFzcz0iZ292dWstYm9keSBnb3Z1ay0hLWZvbnQtc2l6ZS0xNiI+MSBTTUUsIDAgbGFyZ2U8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtdGhpcmQgYXBwLXN0YXQtYmxvY2siIGlkPSJjb21wbGV0ZWQtYXBwbGljYXRpb25zIj4KICAgPGgyPgogICAgICA8c3BhbiBjbGFzcz0iZ292dWstIS1mb250LXNpemUtMzYgZ292dWstIS1kaXNwbGF5LWJsb2NrIj4wPC9zcGFuPgogICAgICA8c3Bhbj5Db21wbGV0ZWQgYXBwbGljYXRpb25zPC9zcGFuPgogICA8L2gyPgogICA8cCBjbGFzcz0iZ292dWstYm9keSBnb3Z1ay0hLWZvbnQtc2l6ZS0xNiI+PC9wPgo8L2Rpdj4KCjwvZGl2PgoKPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwiPgogICAgCgo8aDIgY2xhc3M9ImdvdnVrLXZpc3VhbGx5LWhpZGRlbiI+SW1wb3J0YW50IGRhdGVzPC9oMj4KCgoKICAKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiIGlkPSJvcHBvcnR1bml0eS1pbXBvcnRhbnQtZGF0ZXMiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBQdWJsaXNoZWQKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBXZWRuZXNkYXkgMTcgSnVuZSAyMDIwCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIERlYWRsaW5lIGZvciBhc2tpbmcgcXVlc3Rpb25zCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV2VkbmVzZGF5IDI0IEp1bmUgMjAyMCBhdCAxMTo1OXBtIEdNVAogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBDbG9zaW5nIGRhdGUgZm9yIGFwcGxpY2F0aW9ucwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFdlZG5lc2RheSAxIEp1bHkgMjAyMCBhdCAxMTo1OXBtIEdNVAogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAo8L2RsPgoKCiAgPGgyIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTEiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5PdmVydmlldzwvaDI+CiAgCiAgCgoKICAKCiAgCgogIAoKICAKCiAgCgogIAoKICAKPGRsIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0LS10b3AtYm9yZGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS04Ij4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgU3BlY2lhbGlzdCByb2xlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgRGV2ZWxvcGVyCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFN1bW1hcnkgb2YgdGhlIHdvcmsKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBBIERldmVsb3BlciB0byBiZSBwYXJ0IG9mIGEgZGVsaXZlcnkgdGVhbSBkZXZlbG9waW5nIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcyB3aXRoIG9wZXJhdGlvbmFsIGltcGFjdCBmb3IgTGF3IEVuZm9yY2VtZW50IGFuZCBTZWN1cml0eSB1c2Vycy4gPGJyPlN1cHBvcnRpbmcgdGhlIGRlbGl2ZXJ5IG9mIGFuIGVuZC10by1lbmQgcHJvY2VzcyBhdCB0aGUgY29yZSBvZiB0aGUgSG9tZSBPZmZpY2XigJlzIGR1dHkgdG8ga2VlcCBjaXRpemVucyBzYWZlIGFuZCB0aGUgY291bnRyeSBzZWN1cmUuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIExhdGVzdCBzdGFydCBkYXRlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgTW9uZGF5IDEzIEp1bHkgMjAyMAogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBFeHBlY3RlZCBjb250cmFjdCBsZW5ndGgKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBNYXggMiB5ZWFycwogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBMb2NhdGlvbgogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIExvbmRvbgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBPcmdhbmlzYXRpb24gdGhlIHdvcmsgaXMgZm9yCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgRGF0YSBTZXJ2aWNlIGFuZCBBbmFseXRpY3MgKERTQSksIEhvbWUgT2ZmaWNlCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIE1heGltdW0gZGF5IHJhdGUKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICDCozU1MCBleGNsdWRpbmcgVkFUCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgogIDxoMiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy0yIiBjbGFzcz0iZ292dWstaGVhZGluZy1tIGFwcC1zdW1tYXJ5LWxpc3QtaGVhZGluZyI+QWJvdXQgdGhlIHdvcms8L2gyPgogIAogIAoKCiAgCgogIAoKICAKPGRsIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0LS10b3AtYm9yZGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS04Ij4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgRWFybHkgbWFya2V0IGVuZ2FnZW1lbnQKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICAKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgV2hvIHRoZSBzcGVjaWFsaXN0IHdpbGwgd29yayB3aXRoCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgQSBtdWx0aS1kaXNjaXBsaW5hcnkgYWdpbGUgdGVhbSBpbmNsdWRpbmcgVXNlciBSZXNlYXJjaGVyLCBVWCBkZXNpZ25lciwgSnVuaW9yIGRldmVsb3BlcnMsIGRhdGEgc2NpZW50aXN0cywgdGVzdGVyLCBkZXYgb3BzLCBpbmZyYXN0cnVjdHVyZSwgYW5kIHByb2R1Y3QgbWFuYWdlcnMuCiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIFdoYXQgdGhlIHNwZWNpYWxpc3Qgd2lsbCB3b3JrIG9uCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgRnVsbCBzdGFjayBkZXZlbG9wbWVudDo8YnI+LQlnb3YudWsgc2VydmljZSBmb3IgcmVjZWl2aW5nIHB1YmxpYyBzdWJtaXNzaW9ucyBvZiBTdXNwaWNpb3VzIEFjdGl2aXR5IFJlcG9ydHMuPGJyPi0JRXhpc3RpbmcgU2VhcmNoICZhbXA7IFZpc3VhbGlzYXRpb24gdG9vbC48YnI+QkFVIG9wZXJhdGlvbnMuIDxicj5EZWxpdmVyeSBvZiBlbmhhbmNlZCBmZWF0dXJlcyBhbmQgbmV3IGZ1bmN0aW9uYWxpdHkuPGJyPk5ldyBmZWF0dXJlIGRldmVsb3BtZW50Ljxicj5EZWxpdmVyIHRlY2hub2xvZ3kgJmFtcDsgYXJjaGl0ZWN0dXJlIGNoYW5nZS4gPGJyPlN1cHBvcnQgdGhlIGJ1aWxkIG9mIGludGVybmFsIHRvb2xpbmcgYW5kIHRoZSBhcHBsaWNhdGlvbiBvZiBhbmFseXRpY2FsIHRlY2huaXF1ZXMuPGJyPlN1cHBvcnQganVuaW9yIG1lbWJlcnMgb2YgdGhlIHRlYW0KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKPC9kbD4KCiAgPGgyIGlkPSJvcHBvcnR1bml0eS1hdHRyaWJ1dGVzLTMiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5Xb3JrIHNldHVwPC9oMj4KICAKICAKCgogIAoKICAKCiAgCjxkbCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdC0tdG9wLWJvcmRlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tOCI+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEFkZHJlc3Mgd2hlcmUgdGhlIHdvcmsgd2lsbCB0YWtlIHBsYWNlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgV29yayB3aWxsIGJlIGNhcnJpZWQgb3V0IGZyb20gYSBIb21lIE9mZmljZSBsb2NhdGlvbiBwcmltYXJpbHkgaW4gQ3JveWRvbiBhbmQgYXMgcmVxdWlyZWQgYW5kIGluIHN1cHBsaWVyc+KAmSBvZmZpY2VzLjxicj5SZW1vdGUgYnkgYXJyYW5nZW1lbnQgJmFtcDsgYXMgbmVlZGVkIHRvIGFjY29tbW9kYXRlIGN1cnJlbnQgQ09WSUQtMTkgcmVzdHJpY3Rpb25zLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBXb3JraW5nIGFycmFuZ2VtZW50cwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIFRoZSB3b3JrIHdpbGwgcmVxdWlyZSB0aGUgaW5kaXZpZHVhbCB0byB3b3JrIHdpdGhpbiBhbiBhZ2lsZSBtdWx0aWRpc2NpcGxpbmFyeSBwcm9kdWN0IHRlYW0gaW4gTG9uZG9uLiAgVGhlIHRlYW0gd2lsbCB3b3JrIGZyb20gdGhlIGJhc2UgbG9jYXRpb24gYXMgcmVxdWlyZWQsIE1vbmRheSB0byBGcmlkYXkgMDk6MDAg4oCTIDE3OjAwLiBQYXJ0aWNpcGF0aW9uIGluIHN0YW5kLXVwcywgcGxhbm5pbmcgc2Vzc2lvbnMsIHNob3cgJmFtcDsgdGVsbHMgYW5kIHJldHJvc3BlY3RpdmVzIGFzIHJlcXVpcmVkLjxicj48YnI+VHJhdmVsIHRvIHN0YWtlaG9sZGVyIGJ1aWxkaW5ncyB3aXRoaW4gdGhlIE0yNSBhcmVhIG9uIGEgcmVndWxhciBiYXNpcy4gQWRkaXRpb25hbCB0cmF2ZWwgb3V0c2lkZSBvZiBMb25kb24gbWF5IGJlIHJlcXVpcmVkLjxicj48YnI+RXhwZW5zZXMgb3V0c2lkZSB0aGUgTTI1IHdpbGwgYmUgcGF5YWJsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIEhvbWUgT2ZmaWNlIFRyYXZlbCAobm8gU3Vic2lzdGVuY2UpIHBvbGljeS4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgU2VjdXJpdHkgY2xlYXJhbmNlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgVGhlIFNvZnR3YXJlIEVuZ2luZWVyIG11c3QgYmUgSG9tZSBPZmZpY2UgU0MgY2xlYXJlZCBiZWZvcmUgdGhleSBjYW4gc3RhcnQgd29yay4gPGJyPjxicj5EViBjbGVhcmFuY2UgaXMgZGVzaXJhYmxlLgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAo8L2RsPgoKICA8aDIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtNCIgY2xhc3M9ImdvdnVrLWhlYWRpbmctbSBhcHAtc3VtbWFyeS1saXN0LWhlYWRpbmciPkFkZGl0aW9uYWwgaW5mb3JtYXRpb248L2gyPgogIAogIAoKCiAgCjxkbCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QgYXBwLWdvdnVrLXN1bW1hcnktbGlzdC0tdG9wLWJvcmRlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tOCI+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgPC9kdD4KICAgICAgPGRkIGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIj4KICAgICAgICBTdGF0ZW1lbnRzIG9mIHdvcmsgd2lsbCBiZSBhZ3JlZWQgcGVyaW9kaWNhbGx5IHdpdGggdGhlIHN1cHBsaWVyIG9uIGEgZml4ZWQgcHJpY2UsIGNhcHBlZCwgb3IgVCZhbXA7TSBiYXNpcyB3aXRoIGFncmVlZCBkZWxpdmVyYWJsZXMuPGJyPlN0YW5kYXJkIERPUyBmcmFtZXdvcmsgYW5kIGNhbGwtb2ZmIHRlcm1zIGFuZCBjb25kaXRpb25zLjxicj5FeHBlbnNlcyBvdXRzaWRlIHRoZSBNMjUgd2lsbCBiZSBwYXlhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgSG9tZSBPZmZpY2UgVHJhdmVsIChubyBTdWJzaXN0ZW5jZSkgcG9saWN5Ljxicj5BZGhlcmVuY2UgdG8gRFNBIGFuZCBITyBzZWN1cml0eSBnb3Zlcm5hbmNlIGFuZCBzdGFuZGFyZHMgaXMgbWFuZGF0b3J5LgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAo8L2RsPgoKICA8aDIgaWQ9Im9wcG9ydHVuaXR5LWF0dHJpYnV0ZXMtNSIgY2xhc3M9ImdvdnVrLWhlYWRpbmctbSBhcHAtc3VtbWFyeS1saXN0LWhlYWRpbmciPlNraWxscyBhbmQgZXhwZXJpZW5jZTwvaDI+CiAgCiAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMiPkJ1eWVycyB3aWxsIHVzZSB0aGUgZXNzZW50aWFsIGFuZCBuaWNlLXRvLWhhdmUgc2tpbGxzIGFuZCBleHBlcmllbmNlIHRvIGhlbHAgdGhlbSBldmFsdWF0ZSBzdXBwbGllcnPigJkgdGVjaG5pY2FsIGNvbXBldGVuY2UuPC9wPgogIAogIAogIAoKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBFc3NlbnRpYWwgc2tpbGxzIGFuZCBleHBlcmllbmNlCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1saXN0IGdvdnVrLWxpc3QtLWJ1bGxldCI+CiAgICAgICAgICA8bGk+SGF2ZSBleHBlcnRpc2UgYXMgd29ya2luZyBhIG11bHRpLWRpc2NpcGxpbmFyeSBhZ2lsZSB0ZWFtIGFjcm9zcyB0aGUgZnVsbCBzdGFjayBvZiBkZXZlbG9wbWVudC48L2xpPgogICAgICAgICAgPGxpPkhhdmUgZXhwZXJ0aXNlIGluIG5vZGUuanMsIFJlYWN0LCBBTkdVTEFSLCB0eXBlc2NyaXB0PC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4cGVydGlzZSBpbiBFbGFzdGljc2VhcmNoLCBMb2dzdGFzaCwgS2liYW5hLCBNb25nb0RCPC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4cGVydGlzZSBpbiBDSS9DRCBQaXBlbGluZXMsIGVzcGVjaWFsbHkgd2l0aCBLdWJlcm5ldGVzPC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4cGVydGlzZSBpbiBEZXZlbG9waW5nIGFwcGxpY2F0aW9ucyBvbiBBbWF6b24gV2ViIFNlcnZpY2VzIChBV1MpPC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4cGVydGlzZSBpbiB3cml0aW5nIGNsZWFuIGNvZGUgYW5kIGNvbXByZWhlbnNpdmUsIGNsZWFyIHRlc3RzLjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgTmljZS10by1oYXZlIHNraWxscyBhbmQgZXhwZXJpZW5jZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIDx1bCBjbGFzcz0iZ292dWstbGlzdCBnb3Z1ay1saXN0LS1idWxsZXQiPgogICAgICAgICAgPGxpPkhhdmUgZXhwZXJpZW5jZSBpbiBzdXBwb3J0aW5nIGFsbCBhc3BlY3RzIG9mIHVzZXIgc3RvcnkgZGV2ZWxvcG1lbnQgaW5jbHVkaW5nIGFuYWx5c2lzLCB0ZXN0aW5nIGFuZCBkZXBsb3ltZW50PC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4cGVyaWVuY2Ugb2YgdGhlIEdvdmVybm1lbnQgRGlnaXRhbCBTZXJ2aWNl4oCZcyBEZXNpZ24gUHJpbmNpcGxlcyBhbmQgRGlnaXRhbCBTZXJ2aWNlIFN0YW5kYXJkIGFuZCBpdHMgYXBwbGljYXRpb24gdG8gaW50ZXJuYWwgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLjwvbGk+CiAgICAgICAgICA8bGk+SGF2ZSBleHBlcmllbmNlIG9mIHN1cHBvcnRpbmcgbGl2ZSBzeXN0ZW1zLjwvbGk+CiAgICAgICAgICA8bGk+SGF2ZSBleHBlcmllbmNlIHdpdGggR3JhcGggZGF0YWJhc2VzLCB2aXN1YWxpc2F0aW9uLCBKYXZhLCBTUUw8L2xpPgogICAgICAgICAgPGxpPkhhdmUgZXhwZXJpZW5jZSB3aXRoIHB5dGhvbiBhbmQgZGF0YSBzY2llbmNlIHRvb2xpbmcgKHNjaWtpdC1sZWFybiwgcGFuZGFzKTwvbGk+CiAgICAgICAgICA8bGk+SGF2ZSBleHBlcmllbmNlIGNvbGxhYm9yYXRpbmcgd2l0aCBkYXRhIGFuYWx5c2lzL3NjaWVuY2UgdGVhbXM8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgogIDxoMiBpZD0ib3Bwb3J0dW5pdHktYXR0cmlidXRlcy02IiBjbGFzcz0iZ292dWstaGVhZGluZy1tIGFwcC1zdW1tYXJ5LWxpc3QtaGVhZGluZyI+SG93IHN1cHBsaWVycyB3aWxsIGJlIGV2YWx1YXRlZDwvaDI+CiAgCiAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMiPkFsbCBzdXBwbGllcnMgd2lsbCBiZSBhc2tlZCB0byBwcm92aWRlIGEgd29yayBoaXN0b3J5LjwvcD4KICAKICAKCgogIAoKICAKCiAgCgogIAo8ZGwgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdCBhcHAtZ292dWstc3VtbWFyeS1saXN0IGFwcC1nb3Z1ay1zdW1tYXJ5LWxpc3QtLXRvcC1ib3JkZXIgZ292dWstIS1tYXJnaW4tYm90dG9tLTgiPgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBIb3cgbWFueSBzcGVjaWFsaXN0cyB0byBldmFsdWF0ZQogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIDYKICAgICAgPC9kZD4KICAgICAgCiAgICA8L2Rpdj4KICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fcm93Ij4KICAgICAgPGR0IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleSI+CiAgICAgICAgQ3VsdHVyYWwgZml0IGNyaXRlcmlhCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1saXN0IGdvdnVrLWxpc3QtLWJ1bGxldCI+CiAgICAgICAgICA8bGk+QmUgYWJsZSB0byB3b3JrIGNvbGxhYm9yYXRpdmVseSwgcHJvbW90ZSBpZGVhcyBhbmQgd29yayBlZmZlY3RpdmVseSBpbiBhIG11bHRpLXN1cHBsaWVyIGVudmlyb25tZW50PC9saT4KICAgICAgICAgIDxsaT5CZSBhYmxlIHRvIHByb3ZpZGUga25vd2xlZGdlLXRyYW5zZmVyIGFuZCBzaGFyZSBiZXN0IHByYWN0aWNlPC9saT4KICAgICAgICAgIDxsaT5CZSBhYmxlIHRvIG1haW50YWluIGEgbm8tYmxhbWUgY3VsdHVyZSBhbmQgZW5jb3VyYWdlIHBlb3BsZSB0byBsZWFybiBmcm9tIHRoZWlyIG1pc3Rha2VzPC9saT4KICAgICAgICAgIDxsaT5IYXZlIGV4Y2VsbGVudCBjb21tdW5pY2F0aW9uIHNraWxscywgZXhwZXJpZW5jZWQgYXQgY29tbXVuaWNhdGluZyB3aXRoIHN0YWZmIGF0IGFsbCBsZXZlbHMgb2YgYW4gb3JnYW5pc2F0aW9uPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2RkPgogICAgICAKICAgIDwvZGl2PgogIAogICAgPGRpdiBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19yb3ciPgogICAgICA8ZHQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5Ij4KICAgICAgICBBZGRpdGlvbmFsIGFzc2Vzc21lbnQgbWV0aG9kcwogICAgICA8L2R0PgogICAgICA8ZGQgY2xhc3M9ImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUiPgogICAgICAgIDx1bCBjbGFzcz0iZ292dWstbGlzdCBnb3Z1ay1saXN0LS1idWxsZXQiPgogICAgICAgICAgPGxpPlJlZmVyZW5jZTwvbGk+CiAgICAgICAgICA8bGk+SW50ZXJ2aWV3PC9saT4KICAgICAgICAgIDxsaT5QcmVzZW50YXRpb248L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCiAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3JvdyI+CiAgICAgIDxkdCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X19rZXkiPgogICAgICAgIEV2YWx1YXRpb24gd2VpZ2h0aW5nCiAgICAgIDwvZHQ+CiAgICAgIDxkZCBjbGFzcz0iZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSI+CiAgICAgICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTAgZ292dWstIS1tYXJnaW4tYm90dG9tLTEiPlRlY2huaWNhbCBjb21wZXRlbmNlPC9wPgogICAgICAgIDxkaXY+NjAlPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMgZ292dWstIS1tYXJnaW4tYm90dG9tLTEiPkN1bHR1cmFsIGZpdDwvcD4KICAgICAgICA8ZGl2PjUlPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImdvdnVrLWJvZHkgZ292dWstIS1tYXJnaW4tdG9wLTMgZ292dWstIS1tYXJnaW4tYm90dG9tLTEiPlByaWNlPC9wPgogICAgICAgIDxkaXY+MzUlPC9kaXY+CiAgICAgIDwvZGQ+CiAgICAgIAogICAgPC9kaXY+CiAgCjwvZGw+CgogIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iZ292dWstZ3JpZC1yb3ciPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwiPgogICAgCgoKCjxoMiBpZD0iY2xhcmlmaWNhdGlvbi1xdWVzdGlvbnMiIGNsYXNzPSJnb3Z1ay1oZWFkaW5nLW0gYXBwLXN1bW1hcnktbGlzdC1oZWFkaW5nIj5RdWVzdGlvbnMgYXNrZWQgYnkgc3VwcGxpZXJzPC9oMj4KIAo8cCBjbGFzcz0ic3VtbWFyeS1pdGVtLW5vLWNvbnRlbnQiPk5vIHF1ZXN0aW9ucyBoYXZlIGJlZW4gYW5zd2VyZWQgeWV0PC9wPgoKCgogIDxhIGNsYXNzPSJnb3Z1ay1saW5rIiBocmVmPSIvc3VwcGxpZXJzL29wcG9ydHVuaXRpZXMvMTI1NDMvYXNrLWEtcXVlc3Rpb24iPgogICAgCiAgICAgIExvZyBpbiB0byBhc2sgYSBxdWVzdGlvbgogICAgCiAgPC9hPgoKICA8L2Rpdj4KPC9kaXY+CgoKICA8YnIvPjwhLS0gPC0gcmVtb3ZlIG9uY2UgZ3JpZCBhbmQgYm9keSBlbGVtZW50cyBoYXZlIGJlZW4gY29udmVydGVkIHRvIGdvdnVrIGZyb250ZW5kIC0tPgogIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtcm93Ij4KICAgIDxkaXYgY2xhc3M9ImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMiPgogICAgICA8Zm9ybSBhY3Rpb249Ii9zdXBwbGllcnMvb3Bwb3J0dW5pdGllcy8xMjU0My9yZXNwb25zZXMvc3RhcnQiIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAKICAKICAgIAogIAoKPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJnb3Z1ay1idXR0b24iPgogIEFwcGx5IGZvciB0aGlzIG9wcG9ydHVuaXR5CjwvYnV0dG9uPgogICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCgoKCiAgICAgICAgPC9tYWluPgogICAgICA8L2Rpdj4KICAgIAoKICAgIAogIDxmb290ZXIgY2xhc3M9ImdvdnVrLWZvb3RlciAiIHJvbGU9ImNvbnRlbnRpbmZvIj4KICA8ZGl2IGNsYXNzPSJnb3Z1ay13aWR0aC1jb250YWluZXIgIj4KICAgIAogICAgICA8ZGl2IGNsYXNzPSJnb3Z1ay1mb290ZXJfX25hdmlnYXRpb24iPgogICAgICAgIAogICAgICAgICAgPGRpdiBjbGFzcz0iZ292dWstZm9vdGVyX19zZWN0aW9uIj4KICAgICAgICAgICAgPGgyIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2hlYWRpbmcgZ292dWstaGVhZGluZy1tIj5BYm91dCBEaWdpdGFsIE1hcmtldHBsYWNlPC9oMj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHVsIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QgIj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9oZWxwIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdAogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2RpZ2l0YWwtbWFya2V0cGxhY2UtYnV5ZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZXMgeW91IGNhbiBidXkKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW1hcmtldHBsYWNlLXN1cHBsaWVycy1ndWlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzIHlvdSBjYW4gc2VsbAogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvb3JnYW5pc2F0aW9ucy9jcm93bi1jb21tZXJjaWFsLXNlcnZpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCBDcm93biBDb21tZXJjaWFsIFNlcnZpY2VzCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgR292ZXJubWVudCBEaWdpdGFsIFNlcnZpY2VzCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSIvZy1jbG91ZC9zdXBwbGllcnMiPgogICAgICAgICAgICAgICAgICAgICAgICBHLUNsb3VkIHN1cHBsaWVyIEEgdG8gWgogICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMiBjbGFzcz0iZ292dWstZm9vdGVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbSI+R3VpZGFuY2UgZm9yIHVzaW5nIERpZ2l0YWwgTWFya2V0cGxhY2U8L2gyPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8dWwgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdCAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZ292dWstZm9vdGVyX19saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuZ292LnVrL2d1aWRhbmNlL2ctY2xvdWQtc3VwcGxpZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHlpbmcgdG8gc2VsbCBvbiB0aGUgRy1DbG91ZCBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Imh0dHBzOi8vd3d3Lmdvdi51ay9ndWlkYW5jZS9kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zdXBwbGllcnMtZ3VpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICBBcHBseWluZyB0byBzZWxsIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvaG93LXRvLXNlbGwteW91ci1kaWdpdGFsLW91dGNvbWVzLWFuZC1zcGVjaWFsaXN0cy1zZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbmRpbmcgdG8gYnV5ZXIgcmVxdWlyZW1lbnRzIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZy1jbG91ZC1idXllcnMtZ3VpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICBCdXlpbmcgb24gdGhlIEctQ2xvdWQgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvZGlnaXRhbC1vdXRjb21lcy1hbmQtc3BlY2lhbGlzdHMtYnV5ZXJzLWd1aWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgQnV5aW5nIG9uIHRoZSBET1MgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ3VpZGFuY2UvdGhlLWNyb3duLWhvc3RpbmctZGF0YS1jZW50cmVzLWZyYW1ld29yay1vbi10aGUtZGlnaXRhbC1tYXJrZXRwbGFjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEJ1eWluZyBvbiB0aGUgQ3Jvd24gSG9zdGluZyBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgIDwvZGl2PgogICAgICA8aHIgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fc2VjdGlvbi1icmVhayI+CiAgICAKICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YSI+CiAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YS1pdGVtIGdvdnVrLWZvb3Rlcl9fbWV0YS1pdGVtLS1ncm93Ij4KICAgICAgICAKICAgICAgICAgIDxoMiBjbGFzcz0iZ292dWstdmlzdWFsbHktaGlkZGVuIj5TdXBwb3J0IGxpbmtzPC9oMj4KICAgICAgICAgIAogICAgICAgICAgICA8dWwgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2lubGluZS1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIiBocmVmPSIvdGVybXMtYW5kLWNvbmRpdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFRlcm1zIGFuZCBjb25kaXRpb25zCiAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9jb29raWVzIj4KICAgICAgICAgICAgICAgICAgICBDb29raWVzCiAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImdvdnVrLWZvb3Rlcl9faW5saW5lLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiIGhyZWY9Ii9wcml2YWN5LW5vdGljZSI+CiAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSBub3RpY2UKICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC91bD4KICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbWV0YS1jdXN0b20iPgogICAgICAgICAgICAgIEJ1aWx0IGJ5IHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9vcmdhbmlzYXRpb25zL2dvdmVybm1lbnQtZGlnaXRhbC1zZXJ2aWNlIiBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIj5Hb3Zlcm5tZW50IERpZ2l0YWwgU2VydmljZTwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAKICAgICAgICA8c3ZnCiAgICAgICAgICByb2xlPSJwcmVzZW50YXRpb24iCiAgICAgICAgICBmb2N1c2FibGU9ImZhbHNlIgogICAgICAgICAgY2xhc3M9ImdvdnVrLWZvb3Rlcl9fbGljZW5jZS1sb2dvIgogICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICAgICAgICAgdmlld2JveD0iMCAwIDQ4My4yIDE5NS43IgogICAgICAgICAgaGVpZ2h0PSIxNyIKICAgICAgICAgIHdpZHRoPSI0MSIKICAgICAgICA+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiCiAgICAgICAgICAgIGQ9Ik00MjEuNSAxNDIuOFYuMWwtNTAuNyAzMi4zdjE2MS4xaDExMi40di01MC43em0tMTIyLjMtOS42QTQ3LjEyIDQ3LjEyIDAgMCAxIDIyMSA5Ny44YzAtMjYgMjEuMS00Ny4xIDQ3LjEtNDcuMSAxNi43IDAgMzEuNCA4LjcgMzkuNyAyMS44bDQyLjctMjcuMkE5Ny42MyA5Ny42MyAwIDAgMCAyNjguMSAwYy0zNi41IDAtNjguMyAyMC4xLTg1LjEgNDkuN0E5OCA5OCAwIDAgMCA5Ny44IDBDNDMuOSAwIDAgNDMuOSAwIDk3LjhzNDMuOSA5Ny44IDk3LjggOTcuOGMzNi41IDAgNjguMy0yMC4xIDg1LjEtNDkuN2E5Ny43NiA5Ny43NiAwIDAgMCAxNDkuNiAyNS40bDE5LjQgMjIuMmgzdi04Ny44aC04MGwyNC4zIDI3LjV6TTk3LjggMTQ1Yy0yNiAwLTQ3LjEtMjEuMS00Ny4xLTQ3LjFzMjEuMS00Ny4xIDQ3LjEtNDcuMSA0Ny4yIDIxIDQ3LjIgNDdTMTIzLjggMTQ1IDk3LjggMTQ1IgogICAgICAgICAgLz4KICAgICAgICA8L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0iZ292dWstZm9vdGVyX19saWNlbmNlLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIEFsbCBjb250ZW50IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUKICAgICAgICAgIDxhCiAgICAgICAgICAgIGNsYXNzPSJnb3Z1ay1mb290ZXJfX2xpbmsiCiAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3Lm5hdGlvbmFsYXJjaGl2ZXMuZ292LnVrL2RvYy9vcGVuLWdvdmVybm1lbnQtbGljZW5jZS92ZXJzaW9uLzMvIgogICAgICAgICAgICByZWw9ImxpY2Vuc2UiCiAgICAgICAgICA+T3BlbiBHb3Zlcm5tZW50IExpY2VuY2UgdjMuMDwvYT4sIGV4Y2VwdCB3aGVyZSBvdGhlcndpc2Ugc3RhdGVkCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZ292dWstZm9vdGVyX19tZXRhLWl0ZW0iPgogICAgICAgIDxhCiAgICAgICAgICBjbGFzcz0iZ292dWstZm9vdGVyX19saW5rIGdvdnVrLWZvb3Rlcl9fY29weXJpZ2h0LWxvZ28iCiAgICAgICAgICBocmVmPSJodHRwczovL3d3dy5uYXRpb25hbGFyY2hpdmVzLmdvdi51ay9pbmZvcm1hdGlvbi1tYW5hZ2VtZW50L3JlLXVzaW5nLXB1YmxpYy1zZWN0b3ItaW5mb3JtYXRpb24vdWstZ292ZXJubWVudC1saWNlbnNpbmctZnJhbWV3b3JrL2Nyb3duLWNvcHlyaWdodC8iCiAgICAgICAgPsKpIENyb3duIGNvcHlyaWdodDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9mb290ZXI+CgoKICAgIAogIDxzY3JpcHQgc3JjPSIvc3RhdGljL2phdmFzY3JpcHRzL2FwcGxpY2F0aW9uLmpzPzA2NGMzYmY3ZDU5ZWM5NzIxNTkxOGU1NTNiMzBlMjQ5Ij48L3NjcmlwdD4KICAKCiAgPC9ib2R5Pgo8L2h0bWw+
78
78
  http_version:
79
- recorded_at: Tue, 10 Dec 2019 11:20:29 GMT
79
+ recorded_at: Wed, 17 Jun 2020 11:18:24 GMT
80
80
  recorded_with: VCR 4.0.0
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mechanize'
3
+ require "mechanize"
4
4
 
5
- require 'marketplace_opportunity_scraper/utils'
6
- require 'marketplace_opportunity_scraper/opportunity'
5
+ require "marketplace_opportunity_scraper/utils"
6
+ require "marketplace_opportunity_scraper/opportunity"
7
7
 
8
8
  module MarketplaceOpportunityScraper
9
- BASE_URL = 'https://www.digitalmarketplace.service.gov.uk'
9
+ BASE_URL = "https://www.digitalmarketplace.service.gov.uk"
10
10
  end
@@ -17,7 +17,7 @@ module MarketplaceOpportunityScraper
17
17
  expected_start_date
18
18
  ].freeze
19
19
 
20
- attr_reader *ATTRIBUTES
20
+ attr_reader(*ATTRIBUTES)
21
21
 
22
22
  def initialize(attrs)
23
23
  ATTRIBUTES.each do |a|
@@ -27,10 +27,10 @@ module MarketplaceOpportunityScraper
27
27
  end
28
28
 
29
29
  class << self
30
- def all(type: nil, status: 'open')
30
+ def all(type: nil, status: "open")
31
31
  url = build_url(type, status)
32
32
  page = mechanize.get(url)
33
- opportunities = page.search('.search-result')
33
+ opportunities = page.search(".search-result")
34
34
 
35
35
  opportunities.map { |o| opportunity_from_search_result(o) }
36
36
  end
@@ -46,42 +46,42 @@ module MarketplaceOpportunityScraper
46
46
  private
47
47
 
48
48
  def opportunity_from_id(id)
49
- url = BASE_URL + '/digital-outcomes-and-specialists/opportunities/' + id.to_s
49
+ url = BASE_URL + "/digital-outcomes-and-specialists/opportunities/" + id.to_s
50
50
  page = mechanize.get(url)
51
51
 
52
- title = page.at('h1')
52
+ title = page.at("h1")
53
53
 
54
54
  attrs = {
55
55
  page: page,
56
56
  id: id,
57
57
  title: title.text.strip,
58
58
  url: url,
59
- buyer: page.at('.govuk-caption-l').text,
60
- location: text_from_label(page, 'Location'),
61
- published: date_from_label(page, 'Published'),
62
- question_deadline: date_from_label(page, 'Deadline for asking questions'),
63
- closing: date_from_label(page, 'Closing date for applications'),
64
- expected_start_date: date_from_label(page, 'Latest start date'),
65
- description: text_from_label(page, 'Summary of the work')
59
+ buyer: page.at(".govuk-caption-l").text,
60
+ location: text_from_label(page, "Location"),
61
+ published: date_from_label(page, "Published"),
62
+ question_deadline: date_from_label(page, "Deadline for asking questions"),
63
+ closing: date_from_label(page, "Closing date for applications"),
64
+ expected_start_date: date_from_label(page, "Latest start date"),
65
+ description: text_from_label(page, "Summary of the work")
66
66
  }
67
67
 
68
68
  new(attrs)
69
69
  end
70
70
 
71
71
  def opportunity_from_search_result(element)
72
- title = element.at('.search-result-title')
73
- url = BASE_URL + title.at('a').attributes['href'].value
72
+ title = element.at(".search-result-title")
73
+ url = BASE_URL + title.at("a").attributes["href"].value
74
74
 
75
- opportunity_from_id(url.split('/').last.to_i)
75
+ opportunity_from_id(url.split("/").last.to_i)
76
76
  end
77
77
  end
78
78
 
79
79
  def budget
80
- text_from_label('Budget range')
80
+ text_from_label("Budget range")
81
81
  end
82
82
 
83
83
  def skills
84
- list = find_by_label('Essential skills and experience').search('li')
84
+ list = find_by_label("Essential skills and experience").search("li")
85
85
  list.map { |li| li.text.strip }
86
86
  end
87
87
 
@@ -94,20 +94,20 @@ module MarketplaceOpportunityScraper
94
94
  end
95
95
 
96
96
  def status
97
- return 'open' if banner.nil?
98
- return 'cancelled' if banner.text =~ /cancelled/
99
- return 'awaiting' if banner.text =~ /closed for applications/
97
+ return "open" if banner.nil?
98
+ return "cancelled" if /cancelled/.match?(banner.text)
99
+ return "awaiting" if /closed for applications/.match?(banner.text)
100
100
 
101
- 'awarded'
101
+ "awarded"
102
102
  end
103
103
 
104
104
  def awarded_to
105
105
  return if banner.nil?
106
106
 
107
- text = banner.at('h2').text
108
- return unless text =~ /Awarded to/
107
+ text = banner.at("h2").text
108
+ return unless /Awarded to/.match?(text)
109
109
 
110
- text.gsub('Awarded to ', '').strip
110
+ text.gsub("Awarded to ", "").strip
111
111
  end
112
112
 
113
113
  def page
@@ -117,7 +117,7 @@ module MarketplaceOpportunityScraper
117
117
  private
118
118
 
119
119
  def banner
120
- @banner ||= page.at('.banner-temporary-message-without-action')
120
+ @banner ||= page.at(".banner-temporary-message-without-action")
121
121
  end
122
122
  end
123
123
  end
@@ -7,8 +7,8 @@ module MarketplaceOpportunityScraper
7
7
  def build_url(type, status)
8
8
  check_type(type)
9
9
  check_status(status)
10
- url = BASE_URL + '/digital-outcomes-and-specialists/opportunities'
11
- h = { lot: type, statusOpenClosed: status }.reject { |_k, v| v.nil? }
10
+ url = BASE_URL + "/digital-outcomes-and-specialists/opportunities"
11
+ h = {lot: type, statusOpenClosed: status}.reject { |_k, v| v.nil? }
12
12
  params = URI.encode_www_form(h)
13
13
  "#{url}?#{params}"
14
14
  end
@@ -17,15 +17,15 @@ module MarketplaceOpportunityScraper
17
17
  return if param.nil?
18
18
 
19
19
  valid_array = send("valid_#{type}")
20
- raise(ArgumentError, "#{param} is not a valid #{type}. Must be one of #{valid_array.join(' ')}") unless valid_array.include?(param)
20
+ raise(ArgumentError, "#{param} is not a valid #{type}. Must be one of #{valid_array.join(" ")}") unless valid_array.include?(param)
21
21
  end
22
22
 
23
23
  def check_type(type)
24
- check_params(type, 'types')
24
+ check_params(type, "types")
25
25
  end
26
26
 
27
27
  def check_status(status)
28
- check_params(status, 'statuses')
28
+ check_params(status, "statuses")
29
29
  end
30
30
 
31
31
  def valid_types
@@ -47,7 +47,7 @@ module MarketplaceOpportunityScraper
47
47
  end
48
48
 
49
49
  def find_by_label(page, label)
50
- selector = "//td[@class='summary-item-field-first']/span[text()='#{label}']/../../td[@class='summary-item-field']"
50
+ selector = "//dt[normalize-space()='#{label}']/../dd"
51
51
  page.search(selector)
52
52
  end
53
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MarketplaceOpportunityScraper
4
- VERSION = '0.1.2'
4
+ VERSION = "0.2.0"
5
5
  end
@@ -1,35 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
3
+ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'marketplace_opportunity_scraper/version'
5
+ require "marketplace_opportunity_scraper/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'marketplace_opportunity_scraper'
9
- spec.version = MarketplaceOpportunityScraper::VERSION
10
- spec.authors = ['Stuart Harrison']
11
- spec.email = ['stuart@dxw.com']
8
+ spec.name = "marketplace_opportunity_scraper"
9
+ spec.version = MarketplaceOpportunityScraper::VERSION
10
+ spec.authors = ["Stuart Harrison"]
11
+ spec.email = ["stuart@dxw.com"]
12
12
 
13
- spec.summary = 'A Ruby gem that fetches the latest opportunities from the Gov.uk Digital Marketplace (https://www.digitalmarketplace.service.gov.uk/) '
14
- spec.homepage = 'https://github.com/dxw/marketplace_opportunity_scraper'
15
- spec.license = 'MIT'
13
+ spec.summary = "A Ruby gem that fetches the latest opportunities from the Gov.uk Digital Marketplace (https://www.digitalmarketplace.service.gov.uk/) "
14
+ spec.homepage = "https://github.com/dxw/marketplace_opportunity_scraper"
15
+ spec.license = "MIT"
16
16
 
17
17
  # Specify which files should be added to the gem when it is released.
18
18
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
20
20
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
21
  end
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
- spec.require_paths = ['lib']
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency 'bundler', '~> 2.0'
27
- spec.add_development_dependency 'pry', '~> 0.12.0'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
- spec.add_development_dependency 'rubocop', '~> 0.63'
31
- spec.add_development_dependency 'vcr', '~> 4.0'
32
- spec.add_development_dependency 'webmock', '~> 3.5'
26
+ spec.add_development_dependency "bundler", "~> 2.0"
27
+ spec.add_development_dependency "pry", "~> 0.12.0"
28
+ spec.add_development_dependency "rake", "~> 13.0"
29
+ spec.add_development_dependency "rspec", "~> 3.0"
30
+ spec.add_development_dependency "standard", "~> 0.4.7"
31
+ spec.add_development_dependency "vcr", "~> 4.0"
32
+ spec.add_development_dependency "webmock", "~> 3.5"
33
33
 
34
- spec.add_dependency 'mechanize', '~> 2.7'
34
+ spec.add_dependency "mechanize", "~> 2.7"
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marketplace_opportunity_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Harrison
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-10 00:00:00.000000000 Z
11
+ date: 2020-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +67,19 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: standard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.63'
75
+ version: 0.4.7
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.63'
82
+ version: 0.4.7
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: vcr
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -129,22 +129,22 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - ".circleci/config.yml"
133
- - ".circleci/setup-rubygems.sh"
132
+ - ".github/setup-rubygems.sh"
133
+ - ".github/workflows/build.yml"
134
+ - ".github/workflows/publish.yml"
134
135
  - ".rspec"
135
- - ".rubocop.yml"
136
- - ".rubocop_todo.yml"
137
136
  - ".ruby-version"
137
+ - ".standard.yml"
138
138
  - CODE_OF_CONDUCT.md
139
139
  - Gemfile
140
140
  - Gemfile.lock
141
141
  - LICENSE.txt
142
142
  - README.md
143
143
  - Rakefile
144
- - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_data_that_is_not_on_the_homepage.yml
145
144
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_the_correct_opportunity_data.yml
146
145
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/returns_all_open_opportunities.yml
147
146
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_status_is_specified/returns_the_correct_opportunities.yml
147
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/gets_data_that_is_not_on_the_homepage.yml
148
148
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/returns_the_correct_opportunities.yml
149
149
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_been_awarded/1_4_1_1.yml
150
150
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_not_been_awarded/1_4_2_1.yml
@@ -178,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
178
  - !ruby/object:Gem::Version
179
179
  version: '0'
180
180
  requirements: []
181
- rubygems_version: 3.0.1
181
+ rubygems_version: 3.1.2
182
182
  signing_key:
183
183
  specification_version: 4
184
184
  summary: A Ruby gem that fetches the latest opportunities from the Gov.uk Digital