video_info 2.8.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/unit_test.yml +39 -0
  3. data/Guardfile +1 -1
  4. data/README.md +8 -21
  5. data/lib/video_info.rb +2 -3
  6. data/lib/video_info/provider.rb +3 -2
  7. data/lib/video_info/providers/vimeo_scraper.rb +12 -2
  8. data/lib/video_info/providers/youtube.rb +4 -0
  9. data/lib/video_info/providers/youtube_api.rb +1 -1
  10. data/lib/video_info/providers/youtube_scraper.rb +42 -25
  11. data/lib/video_info/providers/youtubeplaylist_api.rb +15 -1
  12. data/lib/video_info/version.rb +1 -1
  13. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +26 -37
  14. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +26 -35
  15. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +31 -40
  16. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +31 -40
  17. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +31 -40
  18. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +31 -40
  19. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +31 -40
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +31 -40
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +31 -40
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/{1_3_19_1.yml → 1_3_21_1.yml} +31 -40
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +31 -40
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +31 -40
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +31 -40
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +31 -40
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/{1_3_20_1.yml → 1_3_22_1.yml} +31 -40
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +38 -37
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +28 -25
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +44 -41
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +26 -23
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +46 -38
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +24 -23
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +33 -31
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +33 -31
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +32 -28
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +33 -31
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +34 -34
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +33 -30
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +34 -32
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +33 -30
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +34 -34
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +34 -33
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +34 -33
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +34 -33
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +33 -31
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +34 -33
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +34 -33
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_20_1.yml +158 -0
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_20_1.yml +80 -0
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_19_1.yml +158 -0
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_19_1.yml +85 -0
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_21_1.yml +159 -0
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_21_1.yml +80 -0
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +82 -68
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +44 -34
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +36 -35
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +45 -37
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +39 -33
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +46 -38
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +36 -35
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +85 -71
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_18_1.yml +236 -0
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_18_1.yml +82 -0
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +67 -53
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +37 -34
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +67 -54
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +37 -32
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +67 -53
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +37 -32
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +45 -36
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +39 -33
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_22_1.yml +158 -0
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_22_1.yml +84 -0
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +46 -40
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +37 -34
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/1_12_1_1.yml +234 -0
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/2_12_1_1.yml +78 -0
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/1_12_2_1.yml +233 -0
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/2_12_2_1.yml +78 -0
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/1_12_3_1.yml +235 -0
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/2_12_3_1.yml +73 -0
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/1_12_4_1.yml +234 -0
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/2_12_4_1.yml +77 -0
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +25 -17
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +28 -18
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +33 -25
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +33 -25
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +33 -24
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +34 -25
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +33 -25
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +33 -24
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +33 -24
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +33 -25
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +33 -23
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/{1_3_13_1.yml → 1_3_15_1.yml} +33 -23
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +33 -23
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +33 -23
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +33 -25
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +33 -25
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +33 -23
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +20 -442
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +81 -21
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +24 -446
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +81 -21
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +25 -449
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +81 -21
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +24 -450
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +81 -21
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +23 -449
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +81 -21
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +24 -446
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +81 -21
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_18_1.yml +59 -0
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_18_1.yml +114 -0
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +23 -20
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +152 -90
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +23 -447
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +81 -21
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_a_video_without_description/_description/1_1_1_1.yml +59 -0
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +181 -110
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +22 -19
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +152 -90
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +23 -20
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +152 -90
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +23 -20
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +152 -90
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +20 -17
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +152 -90
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_17_1.yml +59 -0
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_17_1.yml +187 -0
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +74 -15
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +152 -90
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +74 -15
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +271 -144
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +21 -18
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +271 -144
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/can_be_called_twice_and_receive_the_same_value.yml +391 -0
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +173 -108
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +23 -19
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +152 -90
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +21 -18
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +152 -90
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +21 -18
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +152 -90
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +23 -20
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +152 -90
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_21_1.yml +59 -0
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_21_1.yml +187 -0
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +87 -27
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +120 -60
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +120 -60
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_21_1.yml +165 -0
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_22_1.yml +274 -0
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_23_1.yml +274 -0
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +131 -71
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +131 -71
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_18_1.yml +165 -0
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +131 -71
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large_2x/1_3_16_1.yml +165 -0
  161. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_maxres/1_3_17_1.yml +165 -0
  162. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +131 -71
  163. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +131 -71
  164. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +131 -71
  165. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +78 -231
  166. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +81 -21
  167. data/spec/lib/video_info/providers/dailymotion_spec.rb +6 -6
  168. data/spec/lib/video_info/providers/vimeo_spec.rb +21 -21
  169. data/spec/lib/video_info/providers/wistia_spec.rb +6 -6
  170. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +22 -28
  171. data/spec/lib/video_info/providers/youtube_scraper_spec.rb +4 -2
  172. data/spec/lib/video_info/providers/youtube_spec.rb +28 -26
  173. data/spec/lib/video_info_spec.rb +0 -4
  174. data/spec/spec_helper.rb +6 -1
  175. data/tmp/rspec_guard_result +25 -0
  176. data/video_info.gemspec +4 -4
  177. metadata +85 -215
  178. data/.travis.yml +0 -21
  179. data/lib/video_info/providers/vkontakte.rb +0 -208
  180. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_18_1.yml +0 -150
  181. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_18_1.yml +0 -79
  182. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_17_1.yml +0 -150
  183. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_17_1.yml +0 -79
  184. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_19_1.yml +0 -150
  185. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_19_1.yml +0 -79
  186. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_16_1.yml +0 -222
  187. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_16_1.yml +0 -79
  188. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_20_1.yml +0 -150
  189. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_20_1.yml +0 -79
  190. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/1_12_1_1.yml +0 -222
  191. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/2_12_1_1.yml +0 -75
  192. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/1_12_2_1.yml +0 -222
  193. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/2_12_2_1.yml +0 -75
  194. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/1_12_3_1.yml +0 -222
  195. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/2_12_3_1.yml +0 -75
  196. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/1_12_4_1.yml +0 -222
  197. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/2_12_4_1.yml +0 -75
  198. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_hashes/available_/1_2_6_1_1.yml +0 -86
  199. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_invalid_video/available_/1_2_2_1_1.yml +0 -50
  200. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_private_video/available_/1_2_3_1_1.yml +0 -132
  201. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect/available_/1_2_4_1_1.yml +0 -134
  202. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect_to_main_page_for_auth/available_/1_2_5_1_1.yml +0 -85
  203. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_valid_video/available_/1_2_1_1_1.yml +0 -87
  204. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author/1_5_14_1.yml +0 -48
  205. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_thumbnail/1_5_15_1.yml +0 -48
  206. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_url/1_5_16_1.yml +0 -48
  207. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/description/1_5_8_1.yml +0 -48
  208. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/duration/1_5_10_1.yml +0 -48
  209. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_code/1_5_6_1.yml +0 -48
  210. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_url/1_5_5_1.yml +0 -48
  211. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/height/1_5_12_1.yml +0 -48
  212. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/thumbnail_small/1_5_18_1.yml +0 -48
  213. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/title/1_5_7_1.yml +0 -48
  214. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/view_count/1_5_13_1.yml +0 -48
  215. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/width/1_5_11_1.yml +0 -50
  216. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/author/1_3_7_1.yml +0 -48
  217. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_code/1_3_6_1.yml +0 -48
  218. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_url/1_3_5_1.yml +0 -48
  219. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/title/1_3_4_1.yml +0 -48
  220. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video-54799401_165822734/title/1_7_4_1.yml +0 -48
  221. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video3552522_171340713/embed_url/1_10_1_1.yml +0 -48
  222. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/description/1_6_8_1.yml +0 -48
  223. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/duration/1_6_10_1.yml +0 -48
  224. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_code/1_6_6_1.yml +0 -48
  225. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_url/1_6_5_1.yml +0 -48
  226. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/height/1_6_12_1.yml +0 -48
  227. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/title/1_6_7_1.yml +0 -48
  228. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/view_count/1_6_13_1.yml +0 -48
  229. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/width/1_6_11_1.yml +0 -48
  230. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author/1_4_5_1.yml +0 -48
  231. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_thumbnail/1_4_6_1.yml +0 -48
  232. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_url/1_4_7_1.yml +0 -48
  233. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/title/1_4_4_1.yml +0 -48
  234. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/1_2_2_1_1.yml +0 -1447
  235. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/2_2_2_1_1.yml +0 -156
  236. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_3_1_1.yml +0 -485
  237. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_3_1_1.yml +0 -54
  238. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_3_11_1.yml +0 -481
  239. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_3_11_1.yml +0 -54
  240. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_3_8_1.yml +0 -483
  241. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_3_8_1.yml +0 -54
  242. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_3_10_1.yml +0 -484
  243. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_3_10_1.yml +0 -54
  244. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_3_9_1.yml +0 -484
  245. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_3_9_1.yml +0 -54
  246. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_3_7_1.yml +0 -484
  247. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_3_7_1.yml +0 -54
  248. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_17_1.yml +0 -485
  249. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_3_17_1.yml +0 -485
  250. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_17_1.yml +0 -54
  251. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_3_17_1.yml +0 -54
  252. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_4_1_1.yml +0 -484
  253. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_4_1_1.yml +0 -54
  254. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_16_1.yml +0 -56
  255. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_16_1.yml +0 -125
  256. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_20_1.yml +0 -56
  257. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_20_1.yml +0 -125
  258. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/2_2_2_1_1.yml +0 -60
  259. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/2_2_3_1_1.yml +0 -94
  260. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/2_2_1_1_1.yml +0 -94
  261. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_19_1.yml +0 -105
  262. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/2_3_19_1.yml +0 -105
  263. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_20_1.yml +0 -189
  264. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/2_3_20_1.yml +0 -189
  265. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_21_1.yml +0 -189
  266. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/2_3_21_1.yml +0 -189
  267. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/2_3_7_1.yml +0 -105
  268. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/2_3_8_1.yml +0 -105
  269. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_16_1.yml +0 -105
  270. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/2_3_16_1.yml +0 -105
  271. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/2_3_15_1.yml +0 -105
  272. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/2_3_14_1.yml +0 -105
  273. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/2_3_13_1.yml +0 -105
  274. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/2_3_6_1.yml +0 -105
  275. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/2_4_2_1.yml +0 -54
  276. data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -236
@@ -1,75 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.vimeo.com/videos/193970014
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Authorization:
13
- - bearer 6b66b015a3504793b4f541d878f46ff6
14
- Accept:
15
- - application/vnd.vimeo.*+json;version=3.2
16
- Accept-Encoding:
17
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Server:
24
- - nginx
25
- Content-Type:
26
- - application/vnd.vimeo.video+json
27
- Cache-Control:
28
- - no-cache, max-age=315360000
29
- Strict-Transport-Security:
30
- - max-age=15552000; includeSubDomains; preload
31
- X-Ratelimit-Limit:
32
- - '500'
33
- X-Ratelimit-Remaining:
34
- - '480'
35
- X-Ratelimit-Reset:
36
- - '2017-03-27T21:16:17+00:00'
37
- Expires:
38
- - Thu, 25 Mar 2027 21:01:17 GMT
39
- Via:
40
- - 1.1 varnish
41
- - 1.1 varnish
42
- Fastly-Debug-Digest:
43
- - 3a9c2fa134ca353f2e91b32fde678202db24c84367cbf962c270ad644ca6482b
44
- Content-Length:
45
- - '1765'
46
- Accept-Ranges:
47
- - bytes
48
- Date:
49
- - Mon, 27 Mar 2017 21:01:18 GMT
50
- Age:
51
- - '0'
52
- Connection:
53
- - keep-alive
54
- X-Served-By:
55
- - cache-iad2131-IAD, cache-lax8638-LAX
56
- X-Cache:
57
- - MISS, MISS
58
- X-Cache-Hits:
59
- - 0, 0
60
- X-Timer:
61
- - S1490648477.890239,VS0,VE231
62
- Vary:
63
- - Accept,Vimeo-Client-Id,Accept-Encoding
64
- body:
65
- encoding: ASCII-8BIT
66
- string: '{"uri":"/videos/193970014","name":"Push ups with Dead Kennedys","description":"wrest-jumps
67
- , fist-jumps and fingers push ups","link":"https://vimeo.com/193970014","duration":25,"width":720,"language":"en","height":720,"embed":{"html":"<iframe
68
- src=\"https://player.vimeo.com/video/193970014?badge=0&autopause=0&player_id=0\"
69
- width=\"720\" height=\"720\" frameborder=\"0\" title=\"Push ups with Dead
70
- Kennedys\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"},"created_time":"2016-12-02T00:08:16+00:00","modified_time":"2017-03-17T04:06:05+00:00","release_time":"2016-12-02T00:08:16+00:00","content_rating":["unrated"],"license":null,"privacy":{"view":"anybody","embed":"public","download":false,"add":false,"comments":"anybody"},"pictures":{"uri":"/videos/193970014/pictures/607241994","active":true,"type":"custom","sizes":[{"width":100,"height":75,"link":"https://i.vimeocdn.com/video/607241994_100x75.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_100x75.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":200,"height":150,"link":"https://i.vimeocdn.com/video/607241994_200x150.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_200x150.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":295,"height":166,"link":"https://i.vimeocdn.com/video/607241994_295x166.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_295x166.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":640,"height":640,"link":"https://i.vimeocdn.com/video/607241994_640x640.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_640x640.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":960,"height":960,"link":"https://i.vimeocdn.com/video/607241994_960x960.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_960x960.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":1280,"height":1280,"link":"https://i.vimeocdn.com/video/607241994_1280x1280.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_1280x1280.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"}],"resource_key":"57b29bab9ca951ea7ecfff04cd24873adb93c7d5"},"tags":[{"uri":"/tags/deadkennedys","name":"deadkennedys","tag":"deadkennedys","canonical":"deadkennedys","metadata":{"connections":{"videos":{"uri":"/tags/deadkennedys/videos","options":["GET"],"total":149}}},"resource_key":"6c472ef895812b191db5dc449b5eb61438130ae2"},{"uri":"/tags/pushups","name":"pushups","tag":"pushups","canonical":"pushups","metadata":{"connections":{"videos":{"uri":"/tags/pushups/videos","options":["GET"],"total":965}}},"resource_key":"eefb73f36010fdf34ec581ac82863d6229a11213"},{"uri":"/tags/martialarts","name":"martialarts","tag":"martialarts","canonical":"martialarts","metadata":{"connections":{"videos":{"uri":"/tags/martialarts/videos","options":["GET"],"total":18627}}},"resource_key":"d4d87a0a8d0a3e4a6aadbe8cf6a486eacd1f659c"},{"uri":"/tags/kungfu","name":"kungfu","tag":"kungfu","canonical":"kungfu","metadata":{"connections":{"videos":{"uri":"/tags/kungfu/videos","options":["GET"],"total":7329}}},"resource_key":"e1261f6e80a26b18d8a66340830d22d747614d83"},{"uri":"/tags/training","name":"training","tag":"training","canonical":"training","metadata":{"connections":{"videos":{"uri":"/tags/training/videos","options":["GET"],"total":92506}}},"resource_key":"fe90efe4886028927fa31d4a0b465effcb2ea692"}],"stats":{"plays":47},"metadata":{"connections":{"comments":{"uri":"/videos/193970014/comments","options":["GET","POST"],"total":0},"credits":{"uri":"/videos/193970014/credits","options":["GET","POST"],"total":1},"likes":{"uri":"/videos/193970014/likes","options":["GET"],"total":0},"pictures":{"uri":"/videos/193970014/pictures","options":["GET","POST"],"total":1},"texttracks":{"uri":"/videos/193970014/texttracks","options":["GET","POST"],"total":0},"related":null},"interactions":{"watchlater":{"added":false,"added_time":null,"uri":"/users/22881647/watchlater/193970014"},"like":{"added":false,"added_time":null,"uri":"/users/22881647/likes/193970014"}}},"user":{"uri":"/users/58200963","name":"Yan
71
- Dubravski","link":"https://vimeo.com/yandub","location":"Earth","bio":"Martial
72
- arts music videos.","created_time":"2016-10-23T16:36:12+00:00","account":"basic","pictures":{"uri":"/users/58200963/pictures/16928380","active":true,"type":"custom","sizes":[{"width":30,"height":30,"link":"https://i.vimeocdn.com/portrait/16928380_30x30?r=pad"},{"width":75,"height":75,"link":"https://i.vimeocdn.com/portrait/16928380_75x75?r=pad"},{"width":100,"height":100,"link":"https://i.vimeocdn.com/portrait/16928380_100x100?r=pad"},{"width":300,"height":300,"link":"https://i.vimeocdn.com/portrait/16928380_300x300?r=pad"}],"resource_key":"a8920a98c8a7ad4404501d5fbc2ddabdaf85b036"},"websites":[{"name":"insta","link":"http://instagram.com/yan.dubravski","description":null}],"metadata":{"connections":{"activities":{"uri":"/users/58200963/activities","options":["GET"]},"albums":{"uri":"/users/58200963/albums","options":["GET"],"total":0},"appearances":{"uri":"/users/58200963/appearances","options":["GET"],"total":0},"channels":{"uri":"/users/58200963/channels","options":["GET"],"total":7},"feed":{"uri":"/users/58200963/feed","options":["GET"]},"followers":{"uri":"/users/58200963/followers","options":["GET"],"total":0},"following":{"uri":"/users/58200963/following","options":["GET"],"total":26},"groups":{"uri":"/users/58200963/groups","options":["GET"],"total":0},"likes":{"uri":"/users/58200963/likes","options":["GET"],"total":1},"moderated_channels":{"uri":"/users/58200963/channels?filter=moderated","options":["GET"],"total":0},"portfolios":{"uri":"/users/58200963/portfolios","options":["GET"],"total":0},"videos":{"uri":"/users/58200963/videos","options":["GET"],"total":4},"shared":{"uri":"/users/58200963/shared/videos","options":["GET"],"total":0},"pictures":{"uri":"/users/58200963/pictures","options":["GET","POST"],"total":1}},"interactions":{"follow":{"added":false,"added_time":null,"uri":"/users/22881647/following/58200963"}}},"resource_key":"41afb6784674550677bda62835732cc7ac7325c1","preferences":{"videos":{"privacy":null}}},"app":null,"status":"available","resource_key":"ab0790e0c66255bc5c9a66a4c30b072b27735eb2","embed_presets":null}'
73
- http_version:
74
- recorded_at: Mon, 27 Mar 2017 21:01:18 GMT
75
- recorded_with: VCR 3.0.3
@@ -1,222 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: https://vimeo.com/193970014
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Accept:
13
- - "*/*"
14
- response:
15
- status:
16
- code: 200
17
- message: OK
18
- headers:
19
- Server:
20
- - nginx
21
- Content-Type:
22
- - text/html; charset=UTF-8
23
- Expires:
24
- - Mon, 27 Mar 2017 22:23:44 GMT
25
- X-Ua-Compatible:
26
- - IE=edge
27
- X-Xss-Protection:
28
- - 1; mode=block
29
- X-Content-Type-Options:
30
- - nosniff
31
- X-Frame-Options:
32
- - sameorigin
33
- Strict-Transport-Security:
34
- - max-age=15552000; includeSubDomains; preload
35
- Content-Security-Policy-Report-Only:
36
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
37
- /_csp'
38
- Via:
39
- - 1.1 varnish
40
- - 1.1 varnish
41
- - 1.1 varnish
42
- Cache-Control:
43
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
44
- X-Varnish-Cache:
45
- - '1'
46
- X-Vserver:
47
- - dfvimeowebproxy5
48
- Fastly-Debug-Digest:
49
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
50
- Content-Length:
51
- - '69340'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Mon, 27 Mar 2017 21:00:57 GMT
56
- Age:
57
- - '0'
58
- Connection:
59
- - keep-alive
60
- X-Served-By:
61
- - cache-iad2123-IAD, cache-lax8647-LAX
62
- X-Cache:
63
- - MISS, MISS
64
- X-Cache-Hits:
65
- - 0, 0
66
- X-Timer:
67
- - S1490648457.464336,VS0,VE89
68
- Vary:
69
- - User-Agent,Accept-Encoding
70
- body:
71
- encoding: UTF-8
72
- string: ''
73
- http_version:
74
- recorded_at: Mon, 27 Mar 2017 21:00:57 GMT
75
- - request:
76
- method: get
77
- uri: https://vimeo.com/193970014
78
- body:
79
- encoding: US-ASCII
80
- string: ''
81
- headers:
82
- Accept-Encoding:
83
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
84
- Accept:
85
- - "*/*"
86
- User-Agent:
87
- - Ruby
88
- response:
89
- status:
90
- code: 200
91
- message: OK
92
- headers:
93
- Server:
94
- - nginx
95
- Content-Type:
96
- - text/html; charset=UTF-8
97
- Expires:
98
- - Mon, 27 Mar 2017 22:23:44 GMT
99
- X-Ua-Compatible:
100
- - IE=edge
101
- X-Xss-Protection:
102
- - 1; mode=block
103
- X-Content-Type-Options:
104
- - nosniff
105
- X-Frame-Options:
106
- - sameorigin
107
- Strict-Transport-Security:
108
- - max-age=15552000; includeSubDomains; preload
109
- Content-Security-Policy-Report-Only:
110
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
111
- /_csp'
112
- Via:
113
- - 1.1 varnish
114
- - 1.1 varnish
115
- - 1.1 varnish
116
- Cache-Control:
117
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
118
- X-Varnish-Cache:
119
- - '1'
120
- X-Vserver:
121
- - dfvimeowebproxy5
122
- Fastly-Debug-Digest:
123
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
124
- Content-Length:
125
- - '19701'
126
- Accept-Ranges:
127
- - bytes
128
- Date:
129
- - Mon, 27 Mar 2017 21:00:57 GMT
130
- Age:
131
- - '0'
132
- Connection:
133
- - keep-alive
134
- X-Served-By:
135
- - cache-iad2137-IAD, cache-lax8639-LAX
136
- X-Cache:
137
- - MISS, MISS
138
- X-Cache-Hits:
139
- - 0, 0
140
- X-Timer:
141
- - S1490648457.584862,VS0,VE86
142
- Vary:
143
- - User-Agent,Accept-Encoding
144
- body:
145
- encoding: ASCII-8BIT
146
- string: !binary |-
147
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCiAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IlZpbWVvIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vdmltZW8uY29tLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0iYXJ0aWNsZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwcyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXBkYXRlZF90aW1lIiBjb250ZW50PSIyMDE3LTAzLTE3VDAwOjA2OjA1LTA0OjAwIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9maWx0ZXIvb3ZlcmxheT9zcmMwPWh0dHBzJTNBJTJGJTJGaS52aW1lb2Nkbi5jb20lMkZ2aWRlbyUyRjYwNzI0MTk5NF8xMjgweDEyODAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZTpzZWN1cmVfdXJsIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNjA3MjQxOTk0XzEyODB4MTI4MC5qcGcmc3JjMT1odHRwcyUzQSUyRiUyRmYudmltZW9jZG4uY29tJTJGaW1hZ2VzX3Y2JTJGc2hhcmUlMkZwbGF5X2ljb25fb3ZlcmxheS5wbmciPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOnR5cGUiIGNvbnRlbnQ9ImltYWdlL2pwZyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOmhlaWdodCIgY29udGVudD0iMTI4MCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6aW9zOmFwcF9uYW1lIiBjb250ZW50PSJWaW1lbyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6aW9zOmFwcF9zdG9yZV9pZCIgY29udGVudD0iNDI1MTk0NzU5Ij4KICAgIDxtZXRhIHByb3BlcnR5PSJhbDppb3M6dXJsIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6YW5kcm9pZDphcHBfbmFtZSIgY29udGVudD0iVmltZW8iPgogICAgPG1ldGEgcHJvcGVydHk9ImFsOmFuZHJvaWQ6cGFja2FnZSIgY29udGVudD0iY29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAiPgogICAgPG1ldGEgcHJvcGVydHk9ImFsOmFuZHJvaWQ6dXJsIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6d2ViOnNob3VsZF9mYWxsYmFjayIgY29udGVudD0idHJ1ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86ZGlyZWN0b3IiIGNvbnRlbnQ9Imh0dHBzOi8vdmltZW8uY29tL3lhbmR1YiI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9ImRlYWRrZW5uZWR5cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9InB1c2h1cHMiPgogICAgPG1ldGEgcHJvcGVydHk9ImFydGljbGU6dGFnIiBjb250ZW50PSJtYXJ0aWFsYXJ0cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9Imt1bmdmdSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9InRyYWluaW5nIj4KICAKICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0id3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InBsYXllciI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAdmltZW8iPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0id3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNjA3MjQxOTk0XzEyODB4MTI4MC5qcGcmYW1wO3NyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnBsYXllciIgY29udGVudD0iaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzE5Mzk3MDAxNCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpwbGF5ZXI6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6cGxheWVyOmhlaWdodCIgY29udGVudD0iMTI4MCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAdmltZW8iPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOm5hbWU6aXBob25lIiBjb250ZW50PSJWaW1lbyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6aXBob25lIiBjb250ZW50PSI0MjUxOTQ3NTkiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDppcGhvbmUiIGNvbnRlbnQ9InZpbWVvOi8vYXBwLnZpbWVvLmNvbS92aWRlb3MvMTkzOTcwMDE0Ij4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDpuYW1lOmlwYWQiIGNvbnRlbnQ9IlZpbWVvIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDppZDppcGFkIiBjb250ZW50PSI0MjUxOTQ3NTkiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDppcGFkIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6bmFtZTpnb29nbGVwbGF5IiBjb250ZW50PSJWaW1lbyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6Z29vZ2xlcGxheSIgY29udGVudD0iY29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDpnb29nbGVwbGF5IiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CgoKCgogPGxpbmsgPgogPGxpbmsgPgogPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkYxOTM5NzAwMTQiIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24rb2VtYmVkIiB0aXRsZT0iUHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzIj4KIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLnhtbD91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkYxOTM5NzAwMTQiIHR5cGU9InRleHQveG1sK29lbWJlZCIgdGl0bGU9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiA8bGluayByZWw9InBpbmdiYWNrIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9fcGluZ2JhY2siPgogPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Ii8xOTM5NzAwMTQiPgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyBvbiBWaW1lbzwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvZ2xvYmFsL2ljb25fZm9udHMubWluLmNzcz9ERVYiPgoKIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9jbGlwX2JldGFfY29tYmluZWQubWluLmNzcz9lYTUzODYzYiI+CgoKCiA8c2NyaXB0PgogIAogIHZhciBwbGF5ZXJBc3NldFVybHMgPSB7ImpzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvcGxheWVyLmpzIiwibW9vZyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvZmxhc2hcL21vb2dhbG9vcFwvNi40LjVcL21vb2dhbG9vcC5zd2YiLCJjaHJvbWVsZXNzX2NzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvY3NzXC9jaHJvbWVsZXNzLmNzcyIsImNocm9tZWxlc3NfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9jaHJvbWVsZXNzLmpzIiwibW9vZ19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL21vb2dhbG9vcC5qcyIsImNzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvY3NzXC9wbGF5ZXIuY3NzIiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20ifTsKCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB3aW5kb3cgPSBfZXh0ZW5kKHdpbmRvdywgeyJ2aW1lb19lc2kiOnsiY29uZmlnIjp7ImF1dG9jb21wbGV0ZV9lbmFibGVkIjp0cnVlfX0sImdsb2JhbF9ub3RpZmljYXRpb25zIjpbXX0pOwo8L3NjcmlwdD4KCiA8c3R5bGUgaWQ9ImVzaV9yaWJib24iPgogLmVzaV9yaWJib24gewogYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjI1MDAlMjIlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjE0JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMjhhMWQ4JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxNCUyMiUyMHdpZHRoJTNEJTIyMzMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyNDhiYzclMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQ3JTIyJTIwd2lkdGglM0QlMjIxMCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzFlMzk1NSUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNTclMjIlMjB3aWR0aCUzRCUyMjI3JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMmY1MTMyJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI4NCUyMiUyMHdpZHRoJTNEJTIyNiUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzQxNjgyOCUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyOTAlMjIlMjB3aWR0aCUzRCUyMjMxJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzN2VhYTI5JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxMjElMjIlMjB3aWR0aCUzRCUyMjM4JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzZGNiZDQyJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxNTklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2FkMjclMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE2MiUyMiUyMHdpZHRoJTNEJTIyMjYlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNlMzlhMjMlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE4OCUyMiUyMHdpZHRoJTNEJTIyMTU0JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzY2M1NTRjJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIzNDIlMjIlMjB3aWR0aCUzRCUyMjclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNjYTQ3M2YlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0OSUyMiUyMHdpZHRoJTNEJTIyMTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNhNzI4MzQlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM2NiUyMiUyMHdpZHRoJTNEJTIyNDglMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3MzU2NzUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQxNCUyMiUyMHdpZHRoJTNEJTIyNzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM2NTNlNjYlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQ4OCUyMiUyMHdpZHRoJTNEJTIyMTIlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMzYjMxNWIlMjIlMkYlM0UlM0MlMkZzdmclM0UlMEEpIHRvcCBsZWZ0LzUwMHB4IDEwMCUgcmVwZWF0LXggIWltcG9ydGFudDsKIH0KIDwvc3R5bGU+CiAKIDxzY3JpcHQ+CiB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiBhYmxpbmNvbG5fY29uZmlnLnRlc3RzID0geyJERlBBZENvaG9ydHMiOnsiaWQiOjY5LCJuYW1lIjoiREZQQWRDb2hvcnRzIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119LCJFeHBsb3JlIjp7ImlkIjo2NCwibmFtZSI6IkV4cGxvcmUiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbXX0sIlRvcE5hdkFCIjp7ImlkIjo2NywibmFtZSI6IlRvcE5hdkFCIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZDb3B5VGVzdCI6eyJpZCI6NzcsIm5hbWUiOiJUb3BOYXZDb3B5VGVzdCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvYWJvdXQiLCJleHBlcmltZW50cyI6W119LCJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiOnsiaWQiOjEwMywibmFtZSI6IlRvcE5hdi5Ib3N0VmlkZW9zTGluayIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiVmlkZW9QYWdlLlZpZXdlclNlZ21lbnRhdGlvblN1cnZleSI6eyJpZCI6OTIsIm5hbWUiOiJWaWRlb1BhZ2UuVmlld2VyU2VnbWVudGF0aW9uU3VydmV5IiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119LCJEZXNrdG9wT3V0cm8iOnsiaWQiOjg0LCJuYW1lIjoiRGVza3RvcE91dHJvIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119fTsKIDwvc2NyaXB0PgoKCiAKIDxzY3JpcHQ+CiB2YXIgZ29vZ2xldGFnID0gZ29vZ2xldGFnIHx8IHt9LAogZ3B0YWRzbG90cyA9IFtdLAogbGFuZ3VhZ2UsCiBoYXNfdXBsb2FkZWQsCiBjb2hvcnQ7CiBnb29nbGV0YWcuY21kID0gZ29vZ2xldGFnLmNtZCB8fCBbXTsKCiAoZnVuY3Rpb24oKSB7CiB2YXIgZ2FkcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLAogdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiBub2RlOwogZ2Fkcy5hc3luYyA9IHRydWU7CiBnYWRzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKIGdhZHMuc3JjID0gKHVzZVNTTCA/ICdodHRwczonIDogJ2h0dHA6JykgKyAnLy93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL3RhZy9qcy9ncHQuanMnOwogbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2Fkcywgbm9kZSk7CiB9KSgpOwoKIGdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsKIAogIGxhbmd1YWdlID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWxhbmd1YWdlXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIik7CiBoYXNfdXBsb2FkZWQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWhhc191cGxvYWRlZFxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpKSA/ICdZJyA6ICdOJzsKIAogY29ob3J0ID0gKHdpbmRvdy5BQkxpbmNvbG4pID8gd2luZG93LkFCTGluY29sbi5nZXRUZXN0KCdERlBBZENvaG9ydHMnKS5nZXQoJ2NvaG9ydCcsICdBJykgOiAnQSc7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbGFuZ3VhZ2UnLCBbbGFuZ3VhZ2VdKTsKIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2lzX3VwbG9hZGVyJywgW2hhc191cGxvYWRlZF0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2EnLCBbKGNvaG9ydCA9PT0gJ0EnKSA/ICdZJyA6ICdOJ10pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2InLCBbKGNvaG9ydCA9PT0gJ0InKSA/ICdZJyA6ICdOJ10pOwoKICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdzZWMnLCBbJ2ZhbHNlJ10pOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xvZ2dlZF9pbicsIFsnZmFsc2UnXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3JwdicsIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKSsxKS50b1N0cmluZygpKTsKCiBnb29nbGV0YWcucHViYWRzKCkuZW5hYmxlQXN5bmNSZW5kZXJpbmcoKTsKIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpOwogfSk7CiA8L3NjcmlwdD4KCjxzY3JpcHQ+CiFmdW5jdGlvbigpe3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpleHBvcnRzLHI9W107aWYoZS5wZXJmb3JtYW5jZXx8KGUucGVyZm9ybWFuY2U9e30pLGUucGVyZm9ybWFuY2Uubm93fHwoZS5wZXJmb3JtYW5jZS5ub3c9cGVyZm9ybWFuY2Uubm93fHxwZXJmb3JtYW5jZS53ZWJraXROb3d8fHBlcmZvcm1hbmNlLm1zTm93fHxwZXJmb3JtYW5jZS5tb3pOb3cpLCFlLnBlcmZvcm1hbmNlLm5vdyl7dmFyIG49RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGU7cGVyZm9ybWFuY2UudGltaW5nJiZwZXJmb3JtYW5jZS50aW1pbmcmJihuPXBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpLGUucGVyZm9ybWFuY2Uubm93PWZ1bmN0aW9uKCl7dmFyIGU9RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGU7cmV0dXJuIGUtbn19ZS5wZXJmb3JtYW5jZS5tYXJrfHwoZS5wZXJmb3JtYW5jZS5tYXJrPWUucGVyZm9ybWFuY2Uud2Via2l0TWFyaz9lLnBlcmZvcm1hbmNlLndlYmtpdE1hcms6ZnVuY3Rpb24obil7ci5mb3JFYWNoKGZ1bmN0aW9uKGUscixhKXtlLm5hbWU9PT1uJiZhLnNwbGljZShyLDEpfSksci5wdXNoKHtuYW1lOm4sZW50cnlUeXBlOiJtYXJrIixzdGFydFRpbWU6ZS5wZXJmb3JtYW5jZS5ub3coKSxkdXJhdGlvbjowfSl9KSxlLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGV8fChlLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGU9ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlP2UucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5VHlwZTpmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihyKXtyZXR1cm4gci5lbnRyeVR5cGU9PT1lfTtyZXR1cm4tMSE9PVsibWFyayIsIm1lYXN1cmUiXS5pbmRleE9mKGUpP3IuZmlsdGVyKG4pOnZvaWQgMH0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiByLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gci5uYW1lPT09ZX0pfSksZS5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWVhc3VyZXM6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtZWFzdXJlIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UuY2xlYXJNYXJrc3x8KGUucGVyZm9ybWFuY2UuY2xlYXJNYXJrcz1lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M/ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1hcmtzOmZ1bmN0aW9uKCl7ci5mb3JFYWNoKGZ1bmN0aW9uKGUscixuKXsibWFyayI9PT1lLmVudHJ5VHlwZSYmbi5zcGxpY2UociwxKX0pLHI9W119KSxlLnBlcmZvcm1hbmNlLm1lYXN1cmV8fChlLnBlcmZvcm1hbmNlLm1lYXN1cmU9ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlP2UucGVyZm9ybWFuY2Uud2Via2l0TWVhc3VyZTpmdW5jdGlvbihlLG4sYSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lJiYibWFyayI9PT1yLmVudHJ5VHlwZX19LG89ci5maWx0ZXIodChuKSlbMF0sbT1yLmZpbHRlcih0KGEpKVswXSxpPW0uc3RhcnRUaW1lLW8uc3RhcnRUaW1lO3IucHVzaCh7bmFtZTplLGVudHJ5VHlwZToibWVhc3VyZSIsc3RhcnRUaW1lOm8uc3RhcnRUaW1lLGR1cmF0aW9uOml9KX0pfSgpLHdpbmRvdy5tYXJrVXNlclRpbWU9ZnVuY3Rpb24oZSl7dmFyIHI9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZnVuY3Rpb24oZSl7c2V0VGltZW91dChlLDApfTtyKGZ1bmN0aW9uKCl7d2luZG93LnBlcmZvcm1hbmNlLm1hcmsoZSksd2luZG93LmNvbnNvbGUmJmNvbnNvbGUudGltZVN0YW1wJiZjb25zb2xlLnRpbWVTdGFtcChlKX0pfTsKCihmdW5jdGlvbigpIHsKIHdpbmRvdy5tYXJrVXNlclRpbWUgPSBmdW5jdGlvbihsYWJlbCkgewogd2luZG93Ll9ndG0gPSB3aW5kb3cuX2d0bSB8fCBbXTsKCiAvLyBFeGl0IGVhcmx5IGlmIHRoZSBicm93c2VyIGNhbid0IGhhbmRsZSBuZXcgdGhpbmdzCiBpZiAodHlwZW9mIHBlcmZvcm1hbmNlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UubWFyayAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyAhPT0gJ2Z1bmN0aW9uJykgewogcmV0dXJuOwogfQoKIHZhciB1aWQgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc3BsaXQoJzAuJylbMV0pICsgbmV3IERhdGUoKS5nZXRUaW1lKCksCiBtYXJrX25hbWUgPSBsYWJlbCArICdfJyArIHVpZCwKIHBhcnRzID0gbGFiZWwuc3BsaXQoJ3wnKSwKIGNhdGVnb3J5ID0gcGFydHNbMF0sCiB2YXJpYWJsZSA9IHBhcnRzWzFdLAogbGFiZWwgPSBwYXJ0c1syXSwKIG1hcmtfdGltZSwKIG1hcmtfZW50cmllczsKCiBwZXJmb3JtYW5jZS5tYXJrKG1hcmtfbmFtZSk7CiBtYXJrX2VudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKG1hcmtfbmFtZSk7CgogaWYgKG1hcmtfZW50cmllcy5sZW5ndGgpIHsKIG1hcmtfdGltZSA9IG1hcmtfZW50cmllc1swXS5zdGFydFRpbWU7CiB3aW5kb3cuX2d0bS5wdXNoKHsKICdldmVudCc6ICdwZXJmb3JtYW5jZV90aW1pbmcnLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5jYXRlZ29yeSc6IGNhdGVnb3J5LAogJ3BlcmZvcm1hbmNlX3RpbWluZy52YXJpYWJsZSc6IHZhcmlhYmxlLAogJ3BlcmZvcm1hbmNlX3RpbWluZy50aW1lJzogbWFya190aW1lIC8gMTAwMCwKICdwZXJmb3JtYW5jZV90aW1pbmcubGFiZWwnOiBsYWJlbAogfSk7CiB9CiB9Owp9KCkpOwo8L3NjcmlwdD4KCiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWJsaW5jb2xuX2NvbWJpbmVkLm1pbi5qcz80NjQyMzBmMCI+PC9zY3JpcHQ+CgoKCiA8L2hlYWQ+CiA8Ym9keSBjbGFzcz0ib25zaXRlICI+CiA8ZGl2IGlkPSJ3cmFwIiBjbGFzcz0ib3V0ZXJfd3JhcCI+CiAKIDxkaXYgY2xhc3M9ImJvZHlfcmliYm9uIGVzaV9yaWJib24iPjwvZGl2PgoKIAogCjxzY3JpcHQ+CiB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0Pgo8ZGl2IGlkPSJ0b3BuYXZfZGVza3RvcCIgY2xhc3M9InRvcG5hdl9kZXNrdG9wICIgcm9sZT0iYmFubmVyIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3dyYXBwZXIiPgoKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX2xvZ28iIGhyZWY9Ii8vdmltZW8uY29tIiBhbHQ9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgdGl0bGU9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgYXJpYS1sYWJlbD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp2aW1lb19ob21lIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9ob21lX2NsaWNrIj4KICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogIDwvYT4KIAogICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImpvaW4iPgogPGEgY2xhc3M9InRvcG5hdl9tZW51X2pvaW4ganMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2pvaW4/bW9kYWw9bmV3J30pIiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGpvaW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmpvaW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2pvaW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2pvaW4iIHRpdGxlPSJCZWNvbWUgYSBWaW1lbyBtZW1iZXIiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9qb2luIj4KIEpvaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ibG9naW4iPgogPGEgY2xhc3M9ImpzLXRvcG5hdl9tZW51X2F1dGgiIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7dmltZW8uU2Vzc2lvbi5jcmVhdGUoJ3JlZycsIG51bGwsIHRydWUpOyIgZGF0YS1nYS1ldmVudC1jbGljaz0idG9wX25hdnxsb2dpbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bG9naW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2xvZ2luX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9sb2dfaW4iIHRpdGxlPSJMb2cgaW4gdG8geW91ciBhY2NvdW50IiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogTG9nIGluIDwvYT4KCiAgIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImNyZWF0ZSI+CiA8YSBjbGFzcz0ianMtdG9wbmF2LWNyZWF0ZSB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bWFuYWdlX3ZpZGVvc3xrZXl3b3JkOmhvc3RfdmlkZW9zIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZSIgdGl0bGU9IiIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2NyZWF0ZSI+CiBIb3N0IHZpZGVvcyA8L2E+CgogICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24iIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBpZD0idG9wbmF2X2NyZWF0ZSI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpjb21wYXJlX3BsYW5zIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS91cGdyYWRlIiB0aXRsZT0iVXBncmFkZSBvciBjb21wYXJlIG91ciBwbGFucyI+Q29tcGFyZSBwbGFuczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Omhvc3RfdmlkZW9zfGtleXdvcmQ6cHJvZmVzc2lvbmFscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vcHJvZmVzc2lvbmFscyIgdGl0bGU9IkdldCBwcm9mZXNzaW9uYWwgdmlkZW8gaG9zdGluZyB0b29scyI+UHJvZmVzc2lvbmFsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Omhvc3RfdmlkZW9zfGtleXdvcmQ6YnVzaW5lc3NlcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vYnVzaW5lc3MiIHRpdGxlPSJHZXQgcG93ZXJmdWwgdmlkZW8gbWFya2V0aW5nIHRvb2xzIj5CdXNpbmVzc2VzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDp2aWRlb19sb3ZlcnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5b25lIiB0aXRsZT0iVXBsb2FkIGFuZCBzaGFyZSB5b3VyIHZpZGVvcyI+VmlkZW8gbG92ZXJzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDp2aWRlb19zY2hvb2wiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV92aWRlb19zY2hvb2xfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3ZpZGVvc2Nob29sIiB0aXRsZT0iTGVhcm4gaG93IHRvIG1ha2UgYmV0dGVyIHZpZGVvcyI+VmlkZW8gU2Nob29sPC9hPgogPC9saT4KICAgPC91bD4KICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJ3YXRjaCI+CiA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6d2F0Y2giIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IiIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X3dhdGNoIj4KIFdhdGNoIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfd2F0Y2giPgogIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Y2F0ZWdvcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2F0ZWdvcmllc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vY2F0ZWdvcmllcyIgdGl0bGU9IkJyb3dzZSB2aWRlb3MgYnkgaW50ZXJlc3QsIGdlbnJlLCBhbmQgbW9yZSI+Q2F0ZWdvcmllczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Y2hhbm5lbHMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2NoYW5uZWxzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscyIgdGl0bGU9IlZpZXcgdmlkZW8gcGxheWxpc3RzIGNyZWF0ZWQgYW5kIGN1cmF0ZWQgYnkgb3RoZXIgbWVtYmVycyI+Q2hhbm5lbHM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOmdyb3VwcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfZ3JvdXBzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9ncm91cHMiIHRpdGxlPSJXYXRjaCBhbmQgZGlzY3VzcyB2aWRlb3Mgd2l0aCBvdGhlcnMiPkdyb3VwczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6YXBwIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9hcHBzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9ldmVyeXdoZXJlIiB0aXRsZT0iV2F0Y2ggVmltZW8gdmlkZW9zIG9uIFRWcywgcGhvbmVzLCB0YWJsZXRzLCBhbmQgbW9yZSI+QXBwczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6bW9yZSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfbW9yZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJEaXNjb3ZlciBtb3JlIHdheXMgdG8gd2F0Y2ggb24gVmltZW8iPk1vcmXigKY8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9Im9uZGVtYW5kIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pc19vbmRlbWFuZCB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOm9uX2RlbWFuZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iV2F0Y2ggbW92aWVzLCBzZXJpZXMsIGFuZCBtb3JlIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfb25kZW1hbmQiPgogT24gRGVtYW5kIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfb25kZW1hbmQiPgogIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOndoYXRzX25ldyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfd2hhdHNfbmV3X2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCIgdGl0bGU9IlNlZSBuZXcgYW5kIG5vdGV3b3J0aHkgdGl0bGVzIGFkZGVkIHRvIE9uIERlbWFuZCI+V2hhdOKAmXMgbmV3PC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6ZGlzY292ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX2Rpc2NvdmVyX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9kaXNjb3ZlciIgdGl0bGU9IkRpc2NvdmVyIHRpdGxlcyBvdXIgdGVhbSByZWNvbW1lbmRzIj5EaXNjb3ZlcjwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOmdlbnJlcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZ2VucmVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UiIHRpdGxlPSJCcm93c2UgdGl0bGVzIGJ5IGdlbnJlIj5HZW5yZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDp0dl9zZXJpZXMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX3R2X3Nlcmllc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvYnJvd3NlL3R2K3NlcmllcyIgdGl0bGU9IkJyb3dzZSBzZXJpZXMgYW5kIFRWIHNob3dzIj5UViArIFNlcmllczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnN0YXJ0X3NlbGxpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX3NlbGxfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL3N0YXJ0c2VsbGluZyIgdGl0bGU9IlNlbGwgZGlyZWN0bHkgdG8geW91ciBmYW5zIHdpdGggVmltZW8gT24gRGVtYW5kIj5TdGFydCBzZWxsaW5nPC9hPgogPC9saT4KICAgPC91bD4KICA8L2xpPgogCiA8L3VsPgogPC9uYXY+PCEtLSAvLnRvcG5hdl9kZXNrdG9wX21lbnUgLS0+CiAKICAgPGRpdiBjbGFzcz0idG9wbmF2X21lbnVfcmlnaHQiPgoKICAgPGZvcm0gY2xhc3M9InRvcG5hdl9tZW51X3NlYXJjaCIgYWN0aW9uPSIvL3ZpbWVvLmNvbS9zZWFyY2giIG1ldGhvZD0iZ2V0IiByb2xlPSJzZWFyY2giIGRhdGEtZHMtcHJvdGVjdGlvbj4KIDxpbnB1dCBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXRvcG5hdl9tZW51X3NlYXJjaF9pbnB1dCBqcy1zZWFyY2hfYXV0b2NvbXBsZXRlIiAgdHlwZT0idGV4dCIgbmFtZT0icSIgdGl0bGU9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIHZhbHVlPSIiIGFyaWEtbGFiZWw9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIHBsYWNlaG9sZGVyPSJTZWFyY2ggdmlkZW9zLCBwZW9wbGUsIGFuZCBtb3JlIiBhdXRvY29tcGxldGU9Im9mZiI+PGJ1dHRvbiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoX3N1Ym1pdCB0b3BuYXZfaWNvbl9zZWFyY2hfYiIgdHlwZT0ic3VibWl0IiBhcmlhLWxhYmVsPSJTZWFyY2giPjwvYnV0dG9uPgogPC9mb3JtPgogCiAgCiAgCiAgIDxhIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF91cGxvYWQgdG9wbmF2X2ljb25fdXBsb2FkX2IiIGhyZWY9Ii91cGxvYWQiIHRpdGxlPSJVcGxvYWQgeW91ciB2aWRlb3MiIHJvbGU9ImJ1dHRvbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb21wb25lbnQ6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIj48c3Bhbj5VcGxvYWQ8L3NwYW4+PC9hPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfbWVudV9yaWdodCAtLT4KICA8L2Rpdj48IS0tIC8udG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciAtLT4KPC9kaXY+CgogPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgIiByb2xlPSJiYW5uZXIiPgoKIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICA8YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfbGVmdCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28gdG9wbmF2X2ljb25fbW9iaWxlX3Zsb2dvX2IiPgogIDwvYnV0dG9uPgogPGEgaHJlZj0iLy92aW1lby5jb20vc2VhcmNoIiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX3NlYXJjaCB0b3BuYXZfaWNvbl9tb2JpbGVfc2VhcmNoX2IiPiA8L2E+CiA8c3BhbiBjbGFzcz0idG9wbmF2X21vYmlsZV9oZWFkZXJfdGl0bGUiPjwvc3Bhbj4KIDwvZGl2PgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IGpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2Nsb3NlIHRvcG5hdl9pY29uX21vYmlsZV94X2IiPiA8L2J1dHRvbj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyB0b3BuYXZfaWNvbl9tb2JpbGVfZ2Vhcl9iIj4gPC9idXR0b24+CiA8L2Rpdj4KCiA8dWw+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2NoYW5uZWxfYiAiIGhyZWY9Ii8vdmltZW8uY29tLyI+CiBTdGFmZiBQaWNrcyA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBkYXRhLWFjdGlvbj0ibGFzdF9wYWdlIiBkYXRhLWJyZWV6ZS1pZ25vcmUgY2xhc3M9InRvcG5hdl9pY29uX21vYmlsZV9hdmF0YXJfYiAiIGhyZWY9Ii9sb2dfaW4iPgogPHNwYW4gY2xhc3M9Im1lbnVfYXV0aCI+Sm9pbiBvciBsb2cgaW48L3NwYW4+IDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3N0YXJfYiIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogV2F0Y2ggPC9hPgogPC9saT4KICAgPGxpPgogPGEgb25jbGljaz0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl91cGxvYWQodGhpcyk7IHJldHVybiBmYWxzZTsiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3VwbG9hZF9iIiBocmVmPSIvL3ZpbWVvLmNvbS91cGxvYWQiPgogVXBsb2FkIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3ZvZF9iICIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiPgogT24gRGVtYW5kIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2ZvcmdvdF9iICIgaHJlZj0iaHR0cHM6Ly9oZWxwLnZpbWVvLmNvbS9oYy9lbi11cyI+CiBIZWxwIDwvYT4KIDwvbGk+CiAgPC91bD4KIDwvc2VjdGlvbj4KCiAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX2Fycm93bGVmdF9iIj4gPC9idXR0b24+CiA8c3BhbiBjbGFzcz0idG9wbmF2X21vYmlsZV9oZWFkZXJfdGl0bGUiPk1vcmUgc3R1ZmY8L3NwYW4+CiA8L2Rpdj4KCiA8dWw+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vdGVybXMiPgogVGVybXMgb2YgU2VydmljZSA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vcHJpdmFjeSI+CiBQcml2YWN5IFBvbGljeSA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZG1jYSI+CiBDb3B5cmlnaHQgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2Nvb2tpZV9wb2xpY3kiPgogQ29va2llcyA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJkZXNrdG9wIiBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3MyZHMoKTsgcmV0dXJuIGZhbHNlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiPgogRGVza3RvcCBzaXRlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgbGFuZ3VhZ2UgaHJlZj0iIyI+CiBMYW5ndWFnZSA8L2E+CiAgIDxzZWxlY3Qgb25jaGFuZ2U9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJsKHRoaXMpIiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzX2xhbmd1YWdlIj4KICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkIHZhbHVlPSJlbiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBFbmdsaXNoIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVzIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVzcGHDsW9sIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImRlLURFIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIERldXRzY2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZnItRlIiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRnJhbsOnYWlzIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImphLUpQIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIOaXpeacrOiqniA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwdC1CUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBQb3J0dWd1w6pzIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImtvLUtSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIO2VnOq1reyWtCA8L29wdGlvbj4KICA8L3NlbGVjdD4KICA8L2xpPgogIDxsaT4KICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiBGQVEgPC9hPgogICA8L2xpPgogIDwvdWw+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X2NvcHlyaWdodCI+VE0gKyDCqSAyMDE3IFZpbWVvLCBJbmMuPC9kaXY+CiA8L3NlY3Rpb24+CjwvbmF2PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKGEsYil7YS52aW1lbz1hLnZpbWVvfHx7fSx2aW1lby5tb2JpbGU9dmltZW8ubW9iaWxlfHx7fSxWaW1lbz12aW1lby5tb2JpbGV8fHt9LFZpbWVvLmRlc2t0b3Bfc2hhcmVkPVZpbWVvLmRlc2t0b3Bfc2hhcmVkfHx7fTt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKCJ0b3BuYXZfZGVza3RvcCIpLGQ9Im9udG91Y2hzdGFydCJpbiBhPyJ0b3VjaHN0YXJ0IjphLlBvaW50ZXJFdmVudD8icG9pbnRlcmRvd24iOmEuTVNQb2ludGVyRXZlbnQ/Ik1TUG9pbnRlckRvd24iOiJjbGljayI7ImNsaWNrIiE9PWQmJmMuYWRkRXZlbnRMaXN0ZW5lcihkLGZ1bmN0aW9uKGEpe3ZhciBiPSJpbWciPT09YS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQ7Yi5jbGFzc0xpc3QuY29udGFpbnMoInRvcG5hdl9oYXNfZHJvcGRvd24iKSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKX0sITEpLGMuYWRkRXZlbnRMaXN0ZW5lcihkLGZ1bmN0aW9uKGMpe2MudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygianMtdG9wbmF2X21lbnVfYXV0aCIpJiYoYi5jb29raWU9Imxhc3RfcGFnZT0iK2VuY29kZVVSSUNvbXBvbmVudChhLmxvY2F0aW9uLnBhdGhuYW1lKSsiO3BhdGg9Jy8nO21heC1hZ2U9MTgwMDsiKX0sITEpLFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl91cGxvYWQ9ZnVuY3Rpb24oYyl7aWYoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpe3ZhciBmLGcsZD0idmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViIixlPSIvdXBsb2FkIjtyZXR1cm4gZj1mdW5jdGlvbigpe2Iud2Via2l0SGlkZGVufHwoYS5sb2NhdGlvbj1lKX0sZz1mdW5jdGlvbigpe2EubG9jYXRpb249ZCxzZXRUaW1lb3V0KGYsMjUpfSxnKCksITF9YS5sb2NhdGlvbj1jLmhyZWZ9LFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl9zMmRzPWZ1bmN0aW9uKCl7Yi5jb29raWU9Im9wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49Iit2aW1lby5kb21haW4sYS5sb2NhdGlvbi5yZWxvYWQoKX0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybD1mdW5jdGlvbihiKXt2YXIgYz1iLnZhbHVlLGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub3BlbigiUE9TVCIsIi9zZXR0aW5ncy9sb2NhbGUiKSxkLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpLGQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksZC5zZW5kKCJsb2NhbGU9IitjKyImdG9rZW49Iit2aW1lby54c3JmdCksZC5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PT1kLnN0YXR1cyYmYS5sb2NhdGlvbi5yZWxvYWQoKX19O3ZhciBlPSJjbGljayIsZj0iYmxvY2siLGc9Im5vbmUiLGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyIpO2gmJmguYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluIik7Yy5zdHlsZS5kaXNwbGF5PWY7dmFyIGQ9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxjLnN0eWxlLmRpc3BsYXk9Z30pO3ZhciBoPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyIpLGk9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiKTtpLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZixjLnN0eWxlLmRpc3BsYXk9Zzt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5zX2Nsb3NlIik7ZC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCksaC5zdHlsZS5kaXNwbGF5PWcsYy5zdHlsZS5kaXNwbGF5PWZ9KX0pfSwhMSksc2V0VGltZW91dChmdW5jdGlvbigpe2Z1bmN0aW9uIGYoYSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbigiUE9TVCIsIi9zZXR0aW5ncy9uYXYiKSxiLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpLGIuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksYi5zZW5kKCJtZXNzYWdlX3N0YXRlPSIrYSsiJnRva2VuPSIrdmltZW8ueHNyZnQpLGIub25sb2FkPWZ1bmN0aW9uKCl7fX12YXIgYT1iLmdldEVsZW1lbnRCeUlkKCJ0b3BuYXZfbWVudV9hdmF0YXIiKTtpZihhKXt2YXIgYz1hLnF1ZXJ5U2VsZWN0b3IoIi50b3BuYXZfbWVudV9hdmF0YXJfYnViYmxlIiksZT0oYS5xdWVyeVNlbGVjdG9yKCIjdG9wbmF2X3VzZXJfZHJvcGRvd24iKSwhMSk7YyYmYy5jbGFzc0xpc3QuYWRkKCJvbiIpLGEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixmdW5jdGlvbigpe2V8fChlPSEwLGMmJmMuY2xhc3NMaXN0LnJlbW92ZSgib24iKSxmKDEpKX0sITEpfX0sMWUzKX0od2luZG93LGRvY3VtZW50KTsKPC9zY3JpcHQ+CgogPGRpdiBjbGFzcz0id3JhcF9jb250ZW50Ij4KIAo8ZGl2IGNsYXNzPSJhcHBfYmFubmVyX2NvbnRhaW5lciI+CgogPGRpdiBjbGFzcz0iYXBwX2Jhbm5lciBoaWRlIGpzLWFwcF9iYW5uZXIiPgoKIDxidXR0b24gY2xhc3M9ImFwcF9iYW5uZXJfY2xvc2UganMtYXBwX2Jhbm5lcl9jbG9zZSI+JnRpbWVzOzwvYnV0dG9uPgoKIDxkaXYgY2xhc3M9ImFwcF9iYW5uZXJfaWNvbl93cmFwcGVyIj4KIDxzdmcgY2xhc3M9ImFwcF9iYW5uZXJfaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yNCA2LjY0M0MyNCAxMS4yODYgMTUgMjIgMTAuODc1IDIyIDYgMjIgNiA3LjcxNCAzLjAxMyA3LjcxNGMtLjM4OCAwLTEuODgzIDEuMDctMS44ODMgMS4wN0wwIDcuMzU4czUuMjUtNSA3LjUtNWM0LjUgMCAzIDEyLjUgNS42MjUgMTIuNSAxLjUgMCA2Ljc1LTcuODU3IDIuMjUtNy44NTctLjc1IDAtMS41LjM1Ny0xLjUuMzU3QzE1IDMuNzg3IDE3LjI1IDIgMjAuNjI1IDIgMjIuODc1IDIgMjQgMy43ODYgMjQgNi42NDN6Ii8+PC9zdmc+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJhcHBfYmFubmVyX2N0YSI+CiBXYXRjaCBpbiBvdXIgYXBwIDwvZGl2PgoKIDxhIGNsYXNzPSJhcHBfYmFubmVyX2J1dHRvbiBqcy1hcHBfYmFubmVyX29wZW5fYXBwIiBkYXRhLWRlZXAtbGluaz0idmlkZW9zLzE5Mzk3MDAxNCIgZGF0YS1zb3VyY2UtY29udGV4dD0iY2xpcCI+CiA8c3BhbiBjbGFzcz0iYXBwX2Jhbm5lcl9idXR0b25fdGV4dCI+T3BlbiBpbiBhcHA8L3NwYW4+CiA8L2E+CgogPC9kaXY+Cgo8L2Rpdj4KCgogIDxzY3JpcHQ+CiAgIWZ1bmN0aW9uKGkpe2lmKHZvaWQgMD09PWkudmltZW98fHZvaWQgMD09PWkudmltZW8uY2xpcHMpe2kudmltZW89aS52aW1lb3x8e30saS52aW1lby5jbGlwcz1pLnZpbWVvLmNsaXBzfHx7fTt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5vcGVuKCJHRVQiLCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vMTkzOTcwMDE0L2NvbmZpZz9ieWxpbmU9MCZjb2xsZWN0aW9ucz0wJmNvbnRleHQ9VmltZW8lNUNDb250cm9sbGVyJTVDQ2xpcENvbnRyb2xsZXIubWFpbiZkZWZhdWx0X3RvX2hkPTEmb3V0cm89bm90aGluZyZwb3J0cmFpdD0wJnNoYXJlPTEmdGl0bGU9MCZ3YXRjaF90cmFpbGVyPTAmcz1iZTAwMTE4NGVmMWY4YzlkNDRjMDg5MTYwYzA4ZThkN2QwYWMwZWIzXzE0OTA3NDcwMjQiLCEwKSxlLm9ubG9hZD1mdW5jdGlvbigpe2kudmltZW8uY2xpcHNbIjE5Mzk3MDAxNCJdPUpTT04ucGFyc2UoZS5yZXNwb25zZVRleHQpfSxlLndpdGhDcmVkZW50aWFscz0hMCxlLnNlbmQoKX19KHdpbmRvdyk7CiA8L3NjcmlwdD4KCjwhLS1baWYgbHRlIElFIDldPgogPHNjcmlwdD53aW5kb3cubG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24gKyAnP2xpdGU9MSc7PC9zY3JpcHQ+CjwhW2VuZGlmXS0tPgoKPG1haW4gaWQ9Im1haW4iIGNsYXNzPSJpc19sb2FkaW5nIj4KIDxkaXYgY2xhc3M9ImlyaXNfZ3JpZCBpcmlzX2dyaWRfZnA5NjAiPgogPGRpdiBjbGFzcz0iY2xpcF9tYWluIj4KIDxkaXYgY2xhc3M9InBsYXllcl9hcmVhIj4KIDxub3NjcmlwdD4KIDxpbWcgc3JjPSJodHRwczovL2kudmltZW9jZG4uY29tL3ZpZGVvLzYwNzI0MTk5NC5qcGc/bXc9MTkyMCZhbXA7bWg9MTA4MCZhbXA7cT03MCIgYWx0PSIiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwIGF1dG87IG1heC1oZWlnaHQ6IDU0MHB4OyIgLz4KIDwvbm9zY3JpcHQ+CiA8L2Rpdj4KCiA8bm9zY3JpcHQ+CiA8ZGl2IGNsYXNzPSJjbGlwX21haW4tY29udGVudCBpcmlzX2dyaWQtd3JhcHBlci0tY29udGVudCI+CiA8ZGl2IGNsYXNzPSJpcmlzX2dyaWQtY29udGVudCI+CiA8ZGl2IGNsYXNzPSJyb3cgdS1jb2xsYXBzZSBjbGlwLW5vdGlmaWNhdGlvbiIgc3R5bGU9Im1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMS41ZW07Ij4KIDxkaXYgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLWNsaXAgaXJpc19ub3RpZmljYXRpb24tY2xpcC0tY2F1dGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tbm8tY2xvc2UgY2xlYXJmaXgiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwOyI+CiA8cD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgdG8gZXhwZXJpZW5jZSBWaW1lbyBpbiBhbGwgb2YgaXRzIGdsb3J5LjwvcD4KIDwvZGl2PgogPC9kaXY+CgogPGRpdiBjbGFzcz0iaXJpc19ncmlkLWNvbnRlbnQiPgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvLXdyYXBwZXIiPgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvIj4KIDxoMSBjbGFzcz0iY2xpcF9pbmZvLWhlYWRlciI+UHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzPC9oMT4KIDwvZGl2PgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvLXN1YmxpbmUtLXdhdGNoIGNsaXBfaW5mby1zdWJsaW5lLS1pbmxpbmUiPgogPHAgY2xhc3M9InVzZXJieWxpbmUtc3VibGluZSB1c2VyYnlsaW5lLXN1YmxpbmUtLWxnIj4KIDxzcGFuPmZyb208L3NwYW4+CiA8c3BhbiBjbGFzcz0idXNlcmxpbmsgdXNlcmxpbmstLW1kIj4KIDxhIGhyZWY9Ii95YW5kdWIiPllhbiBEdWJyYXZza2k8L2E+CiA8c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrIj4KICA8L3NwYW4+CiA8L3NwYW4+CiA8L3A+CiA8c3BhbiBjbGFzcz0iY2xpcF9pbmZvLXRpbWUiPjx0aW1lIGRhdGV0aW1lPSIyMDE2LTEyLTAxVDE5OjA4OjE2LTA1OjAwIiB0aXRsZT0iVGh1cnNkYXksIERlY2VtYmVyIDEsIDIwMTYgYXQgNzowOCBQTSI+NCBtb250aHMgYWdvPC90aW1lPjwvc3Bhbj4KIDwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgoKIDxkaXYgY2xhc3M9ImNsaXBfZGV0YWlscyBpcmlzX2RpdmlkZXItLWRhcmsgaXJpc19kaXZpZGVyLXRvcCBpcmlzX2RpdmlkZXItdG9wLS1tIGlyaXNfZGl2aWRlci1ib3QgaXJpc19kaXZpZGVyLWJvdC0tbSB1LWNvbGxhcHNlIGNsZWFyZml4Ij4KIDxkaXYgY2xhc3M9ImlyaXNfZ3JpZC1jb250ZW50Ij4KIDxkaXYgY2xhc3M9ImNsaXBfZGV0YWlscy1kZXNjcmlwdGlvbiBkZXNjcmlwdGlvbi13cmFwcGVyIGlyaXNfZGVzYyI+CiA8cCBjbGFzcz0iZmlyc3QiPndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwczwvcD4gPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CiA8L25vc2NyaXB0PgogPC9kaXY+CiA8L2Rpdj4KPC9tYWluPgoKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKIHdpbmRvdy52aW1lby5jbGlwX3BhZ2VfY29uZmlnID0geyJjbGlwIjp7ImlkIjoxOTM5NzAwMTQsInRpdGxlIjoiUHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzIiwiZGVzY3JpcHRpb24iOiI8cCBjbGFzcz1cImZpcnN0XCI+d3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzPFwvcD4iLCJ1cGxvYWRlZF9vbiI6IjIwMTYtMTItMDEgMTk6MDg6MTYiLCJ1cGxvYWRlZF9vbl9yZWxhdGl2ZSI6IjQgbW9udGhzIGFnbyIsInVwbG9hZGVkX29uX2Z1bGwiOiJUaHVyc2RheSwgRGVjZW1iZXIgMSwgMjAxNiBhdCA3OjA4IFBNIEVTVCIsImlzX3NwYXRpYWwiOmZhbHNlLCJwcml2YWN5Ijp7ImlzX3B1YmxpYyI6dHJ1ZSwidHlwZSI6ImFueWJvZHkiLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyJ9LCJkdXJhdGlvbiI6eyJyYXciOjI1LCJmb3JtYXR0ZWQiOiIwMDoyNSJ9LCJpc19saWtlZCI6ZmFsc2UsImlzX3VuYXZhaWxhYmxlIjpmYWxzZX0sIm93bmVyIjp7ImlkIjo1ODIwMDk2MywiZGlzcGxheV9uYW1lIjoiWWFuIER1YnJhdnNraSIsImFjY291bnRfdHlwZSI6IiIsImJhZGdlIjpudWxsLCJwb3J0cmFpdCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjkyODM4MF83NXg3NSIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2OTI4MzgwXzE1MHgxNTAifSwidXJsIjoiXC95YW5kdWIiLCJ2ZXJpZmllZCI6dHJ1ZSwiaXNfZm9sbG93aW5nIjpmYWxzZX0sIm9uZGVtYW5kIjpudWxsLCJicmFuZF9jaGFubmVsIjpudWxsLCJjdXJfdXNlciI6bnVsbCwic3RhdHVzIjp7InN0YXRlIjoicmVhZHkifSwiY29weXJpZ2h0X3N0YXR1cyI6eyJpc19ibG9ja2VkIjpmYWxzZX0sImNvbnRlbnRfYmxvY2tfc3RhdHVzIjp7ImlzX2Jsb2NrZWQiOmZhbHNlLCJtZXNzYWdlIjpudWxsLCJjb250aW51b3VzX3BsYXlfZW5hYmxlZCI6ZmFsc2V9LCJwbGF5ZXIiOnsiY29uZmlnX3VybCI6Imh0dHBzOlwvXC9wbGF5ZXIudmltZW8uY29tXC92aWRlb1wvMTkzOTcwMDE0XC9jb25maWc/YnlsaW5lPTAmY29sbGVjdGlvbnM9MCZjb250ZXh0PVZpbWVvJTVDQ29udHJvbGxlciU1Q0NsaXBDb250cm9sbGVyLm1haW4mZGVmYXVsdF90b19oZD0xJm91dHJvPW5vdGhpbmcmcG9ydHJhaXQ9MCZzaGFyZT0xJnRpdGxlPTAmd2F0Y2hfdHJhaWxlcj0wJnM9YmUwMDExODRlZjFmOGM5ZDQ0YzA4OTE2MGMwOGU4ZDdkMGFjMGViM18xNDkwNzQ3MDI0IiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20iLCJkaW1lbnNpb25zIjp7ImhlaWdodCI6NTQwLCJ3aWR0aCI6NTQwfSwicG9zdGVyIjp7InVybCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYwNzI0MTk5NC5qcGc/bXc9MjAwMCZtaD0xMDgwJnE9NzAifX0sInNoYXJlX2VuYWJsZWQiOnRydWUsImNvbnRpbnVvdXNfcGxheV9lbmFibGVkIjp0cnVlLCJzZW5kX3RvX3dpcHN0ZXJfZW5hYmxlZCI6ZmFsc2UsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MDcyNDE5OTRfMTkweDEwNy5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MDcyNDE5OTRfMzgweDIxNC5qcGciLCJ3aWR0aCI6MTkwLCJoZWlnaHQiOjEwNywiaWQiOjYwNzI0MTk5NH0sImFkcyI6eyJhZmNfdGV4dF9hZCI6eyJwdWJfaWQiOiJjYS1wdWItMjQ1OTI0MjE5OTA0ODcwMCJ9LCJkaXNwbGF5X2FkIjp7Im5ldHdvcmtfaWQiOiI1NDU0OTU0NCIsInVuaXRfbmFtZSI6ImNsaXBcL3Nwb3J0cyIsInNpemVzIjpbMzAwLDI1MF0sImN1c3RvbV90YXJnZXRpbmciOnsiY29udGVudF9yYXRpbmciOnt9fX19LCJjb250ZW50X3JhdGluZyI6bnVsbCwibm90aWZpY2F0aW9ucyI6W10sImNhdGVnb3JpZXNfY29uZmlnIjp7ImNhdGVnb3JpZXMiOlt7Im5hbWUiOiJNYXJ0aWFsIEFydHMiLCJ1cmwiOiJcL2NhdGVnb3JpZXNcL2luc3RydWN0aW9uYWxzXC9tYXJ0aWFsYXJ0c1wvdmlkZW9zIn0seyJuYW1lIjoiU3BvcnRzIiwidXJsIjoiXC9jYXRlZ29yaWVzXC9zcG9ydHMifSx7Im5hbWUiOiJJbnN0cnVjdGlvbmFscyIsInVybCI6IlwvY2F0ZWdvcmllc1wvaW5zdHJ1Y3Rpb25hbHMifV0sInRvdGFsX2NhdGVnb3JpZXMiOjN9LCJtdXNpY190cmFjayI6bnVsbCwiY2NfbGljZW5zZSI6bnVsbCwiY3JlZGl0cyI6eyJ0b3RhbF9jcmVkaXRzIjp7InJhdyI6MCwiZm9ybWF0dGVkIjowfX0sInN0cmVhbSI6eyJpZCI6bnVsbCwicG9zIjowfSwiY29sbGVjdGlvbl9hZGRlciI6eyJlbmFibGVkIjpmYWxzZX0sImNsaXBfc3RhdHMiOnsiZW5hYmxlZCI6ZmFsc2V9LCJkb3dubG9hZF9jb25maWciOm51bGwsInN1cnZleV91cmwiOiJodHRwczpcL1wvd3d3Lm1hcmtldGluZ3Jlc2VhcmNocmVzb3VyY2VzLmNvbVwvaW1hZ2VzXC9vdm0wMDUxNlwvbXJyLmFzcD9JLlVzZXIxPU8mdXNlcj1sb2dnZWRvdXQmY2xpcD0xOTM5NzAwMTQmdnVpZD0ifTsKIHdpbmRvdy5jYW5fcHJlbG9hZCA9IHRydWU7CgogPC9zY3JpcHQ+CgogPGRpdiBjbGFzcz0iaGlkZSI+CiA8ZGl2IGlkPSJnb29nbGVfYWZjX2FkcyIgY2xhc3M9Imdvb2dsZV9hZCI+PC9kaXY+CgogPC9kaXY+Cgo8c2NyaXB0Pgpjb25zb2xlLmxvZygnJWMgXG5cCuKOnCAgICAgICBAQEAmICAgICAgIEBAQEBAQFxuXArijpwgICAgI0BAQEBAQEAgICAgJkBAQEBAQEBAICAgICAgIEJ1aWx0IHVzaW5nOlxuXArijpwgICNAQEBAQEBAQEAuICAlJSZAQEBAQEBAICAgICAgICDigKIgUmVhY3QgKyBGbHV4XG5cCuKOnCAgICAgICZAQEBAQCUgICAgIChAQEBAQCggICAgICAg4oCiIEVTNlxuXArijpwgICAgICAgQEBAQEBAICAgICBAQEBAQEAgICAgICAgIOKAoiBGZXRjaCBBUElcblwK4o6cICAgICAgICVAQEBAQCggIC5AQEBAQCggICAgICAgICDigKIgRmxleGJveFxuXArijpwgICAgICAgIEBAQEBAQChAQEBAQEBcblwK4o6cICAgICAgICAvQEBAQEBAQEBAQCUgICAgICAgICAgICBMaWtlIHBsYXlpbmcgd2l0aCBuZXcgdGVjaG5vbG9neSwgdG9vP1xuXArijpwgICAgICAgICAmQEBAQEBAQCUgICAgICAgICAgICAgIGh0dHBzOi8vdmltZW8uY29tL2pvYnNcblwK4o6cICAgICAgICAgIEBAQEBAI1xuXApcblwKJywgJ2NvbG9yOiAjMDBhZGVmOycpOwo8L3NjcmlwdD4KIDwvZGl2PgoKICAKPGZvb3RlciBjbGFzcz0iZm9vdGVyX3YyIGZvb3Rlcl92Mi0tcmVzcG9uc2l2ZSI+CiAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19zaXRlbWFwIj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGlua3MiPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VmltZW88L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2Fib3V0IiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYWJvdXRfY2xpY2siPgogQWJvdXQgVmltZW8gPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2Jsb2ciIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIj4KIFZpbWVvIEJsb2cgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZ3VpZGVsaW5lcyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2d1aWRlbGluZXNfY2xpY2siPgogVmltZW8gR3VpZGVsaW5lcyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSJodHRwczovL2RldmVsb3Blci52aW1lby5jb20iIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19kZXZlbG9wZXJzX2NsaWNrIj4KIERldmVsb3BlcnMgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2pvYnMiPgogSm9icyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPkhlbHA8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayI+CiBIZWxwIENlbnRlciA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdmlkZW9zY2hvb2wiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aWRlb19zY2hvb2xfY2xpY2siPgogVmlkZW8gU2Nob29sIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9oZWxwL2ZhcSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2ZhcV9jbGljayI+CiBGQVEgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2ZvcnVtcyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2ZvcnVtc19jbGljayI+CiBGb3J1bXMgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5Nb3JlPC9zcGFuPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KIDwvZGl2PgogPC9oND4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9vbmRlbWFuZCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX29uX2RlbWFuZF9jbGljayI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2V2ZXJ5d2hlcmUiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ldmVyeXdoZXJlX2NsaWNrIj4KIEV2ZXJ5d2hlcmUgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3VwbG9hZCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwbG9hZF9jbGljayI+CiBVcGxvYWQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3NpdGVfbWFwIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc2l0ZV9tYXBfY2xpY2siPgogU2l0ZSBNYXAgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5VcGdyYWRlPC9zcGFuPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KIDwvZGl2PgogPC9oND4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9wbHVzP3Y9Zm9vdGVyIj4KIFZpbWVvIFBsdXMgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3Bybz92PWZvb3RlciI+CiBWaW1lbyBQUk8gPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2J1c2luZXNzIj4KIFZpbWVvIEJ1c2luZXNzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgogPC9kaXY+CgogICA8YXNpZGUgaWQ9ImZvb3Rlcl90aXAiIGNsYXNzPSJmb290ZXJfdjJfX3RpcCIgYXJpYS1saXZlPSJwb2xpdGUiPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogPHAgY2xhc3M9ImFjdGl2ZSBmb290ZXJfdjJfX3RpcC1jb250ZW50Ij5BbmltYXRlIGFsbCB0aGUgdGhpbmdzIHdpdGggdGhlIGhhbmR5IDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL3ZpZGVvc2Nob29sL2xlc3Nvbi80MzQvbWNsYXJlbnMtd29ya3Nob3AtYXBwIj5NY0xhcmVuIFdvcmtzaG9wIGFwcDwvYT4sIG5hbWVkIGFmdGVyIHRoZSBmaWxtbWFraW5nIG1hc3RlciBoaW1zZWxmLjwvcD4KIDwvYXNpZGU+CiA8L3NlY3Rpb24+CiAKICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogPHA+VE0gKyAmY29weTsgMjAxNyBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KIDwvZGl2PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvdGVybXMiIHRpdGxlPSJUZXJtcyAmYW1wOyBDb25kaXRpb25zIj4KIFRlcm1zIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogUHJpdmFjeSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvZG1jYSIgdGl0bGU9IkNvcHlyaWdodCBJbmZvcm1hdGlvbiI+CiBDb3B5cmlnaHQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2Nvb2tpZV9wb2xpY3kiIHRpdGxlPSJMZWFybiBtb3JlIGFib3V0IGhvdyBWaW1lbyB1c2VzIGNvb2tpZXMiPgogQ29va2llcyA8L2E+CiA8L2xpPgogPC91bD4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiBNYWRlIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vbG92ZSI+PHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPjwvYT4gaW4gTllDLiA8L2Rpdj4KIDwvZGl2PgoKIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxzcGFuIGNsYXNzPSJsYW5ndWFnZSI+CiBMYW5ndWFnZToKIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9IiNsYW5ndWFnZSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2xvY2FsZScsIHNpemU6ICdzbWFsbCd9KTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSI+RW5nbGlzaDwvYT4KIDwvc3Bhbj4KCiAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgPC9kaXY+Cgo8L3NlY3Rpb24+CjwvZm9vdGVyPgogCiA8L2Rpdj4KCiAKIAogCiAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KIFt7InVybCI6Imh0dHBzOi8vdmltZW8uY29tLzE5Mzk3MDAxNCIsInRodW1ibmFpbFVybCI6Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY2MDcyNDE5OTRfMTI4MHgxMjgwLmpwZyZzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyIsImVtYmVkVXJsIjoiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzE5Mzk3MDAxNCIsIm5hbWUiOiJQdXNoIHVwcyB3aXRoIERlYWQgS2VubmVkeXMiLCJkZXNjcmlwdGlvbiI6IndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwcyIsImhlaWdodCI6NzIwLCJ3aWR0aCI6NzIwLCJwbGF5ZXJUeXBlIjoiSFRNTDUgRmxhc2giLCJ2aWRlb1F1YWxpdHkiOiJIRCIsImR1cmF0aW9uIjoiUFQwMEgwME0yNVMiLCJ1cGxvYWREYXRlIjoiMjAxNi0xMi0wMVQxOTowODoxNi0wNTowMCIsInRodW1ibmFpbCI6eyJAdHlwZSI6IkltYWdlT2JqZWN0IiwidXJsIjoiaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9maWx0ZXIvb3ZlcmxheT9zcmMwPWh0dHBzJTNBJTJGJTJGaS52aW1lb2Nkbi5jb20lMkZ2aWRlbyUyRjYwNzI0MTk5NF8xMjgweDEyODAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIiwid2lkdGgiOjEyODAsImhlaWdodCI6MTI4MH0sImF1dGhvciI6eyJAdHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJZYW4gRHVicmF2c2tpIiwidXJsIjoiaHR0cHM6Ly92aW1lby5jb20veWFuZHViIn0sInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlZpZXdBY3Rpb24iLCJ0YXJnZXQiOiJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCJ9LCJpbnRlcmFjdGlvbkNvdW50Ijo0Nywia2V5d29yZHMiOiJbZGVhZGtlbm5lZHlzLHB1c2h1cHMsbWFydGlhbGFydHMsa3VuZ2Z1LHRyYWluaW5nXSIsIkB0eXBlIjoiVmlkZW9PYmplY3QiLCJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIn0seyJpdGVtTGlzdEVsZW1lbnQiOlt7IkB0eXBlIjoiTGlzdEl0ZW0iLCJwb3NpdGlvbiI6MSwiaXRlbSI6eyJAaWQiOiJodHRwczovL3ZpbWVvLmNvbS95YW5kdWIiLCJuYW1lIjoiWWFuIER1YnJhdnNraSJ9fSx7IkB0eXBlIjoiTGlzdEl0ZW0iLCJwb3NpdGlvbiI6MiwiaXRlbSI6eyJAaWQiOiJodHRwczovL3ZpbWVvLmNvbS95YW5kdWIvdmlkZW9zIiwibmFtZSI6IlZpZGVvcyJ9fV0sIkB0eXBlIjoiQnJlYWRjcnVtYkxpc3QiLCJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIn1dIDwvc2NyaXB0PgoKPHNjcmlwdD4KIHZhciBfX2ZhID0gX19mYSB8fCBbXTsKIF9fZmEucHVzaChbJ3RyYWNrUGFnZXZpZXcnXSk7CgogIC8vIEFuYWx5dGljcyBTZXR1cAogdmFyIF9ndG0gPSBfZ3RtIHx8IFtdLAogX2luaXRpYWxfZ3RtX3N0YXRlID0geyJjbGlwX2lkIjoxOTM5NzAwMTQsImNyZWF0b3JfaWQiOjU4MjAwOTYzLCJjYXRlZ29yeSI6Ik1hcnRpYWwgQXJ0cywgU3BvcnRzLCBJbnN0cnVjdGlvbmFscyIsInByaXZhY3kiOiJhbnlib2R5Iiwic3RhZmZfcGljayI6Im5vIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9OwoKIF9pbml0aWFsX2d0bV9zdGF0ZVsndnVpZCddID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZ3RtLnN0YXJ0J10gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZXZlbnQnXSA9ICdndG0uanMnOwogX2d0bS5wdXNoKF9pbml0aWFsX2d0bV9zdGF0ZSk7CiAKIC8qKgogKiBJZiB0aGUgY3VycmVudCByZXF1ZXN0IHdhcyBidWNrZXRlZCBpbiBhbiBBQkxpbmNvbG4gZXhwZXJpbWVudCwKICogc2VuZCB0aGUgc2VsZWN0ZWQgdHJlYXRtZW50IGJhY2sgZnJvbSB0aGUgY2xpZW50LCB0byBmaWx0ZXIgYWIgdGVzdAogKiBkYXRhIGRvd24gdG8gbm9uLXJvYm90IHVzZXJzIHRoYXQgcnVuIEphdmFTY3JpcHQuCiAqLwogaWYgKCJBQkxpbmNvbG4iIGluIHdpbmRvdykgewogKGZ1bmN0aW9uICgpIHsKICAgfSkoKTsKIH0KCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogIEJVSUxEX0hBU0ggPSAnNzI0NTQnOwoKICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsibG9jYWxlIjoiZW4ifSk7CgogIHZhciBsb2NhbGVDb25maWcgPSB7CiBsYW5nOiAnZW4nLAogJ0RhdGUnOiB7CiBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiBzaG9ydERhdGU6ICclZC8lbS8lWScsCiBzaG9ydFRpbWU6ICclSTolTSVwJywKIEFNOiAnQU0nLAogUE06ICdQTScsCiBmaXJzdERheU9mV2VlazogMCwKCiAvLyBEYXRlLkV4dHJhcwogb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiByZXR1cm4gZGF5T2ZNb250aDsKIH0KIH0sCiAnRGF0ZVBpY2tlcic6IHsKIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogY2FuY2VsOiAiQ2FuY2VsIiwKIHdlZWs6ICJXayIgfSwKICAnTnVtYmVyJzogewogZGVjaW1hbDogJy4nLAogZ3JvdXA6ICcsJywKIGN1cnJlbmN5OiB7CiBwcmVmaXg6ICckJwogfQogfSwKICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9IH07CgogdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAKICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIiwiMSBUcmFjayI6IjEgVHJhY2siLCJBYm91dCI6IkFib3V0IiwiQWNjZXB0IjoiQWNjZXB0IiwiQWRkIGEgbmV3IGNvbW1lbnQiOiJBZGQgYSBuZXcgY29tbWVudCIsIkFkZCBjb21tZW50IjoiQWRkIGNvbW1lbnQiLCJBZGQgcmVwbHkiOiJBZGQgcmVwbHkiLCJBZGQgdG8gY29sbGVjdGlvbnMiOiJBZGQgdG8gY29sbGVjdGlvbnMiLCJBZGQiOiJBZGQiLCJBbGJ1bXMiOiJBbGJ1bXMiLCJBcHByb3hpbWF0ZSBUaW1lIFJlbWFpbmluZyI6IkFwcHJveGltYXRlIFRpbWUgUmVtYWluaW5nIiwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IGRlbGV0ZSB0aGlzIGNvbW1lbnQgcGVybWFuZW50bHk/IjoiQXJlIHlvdSBzdXJlIHlvdSB3YW50IGRlbGV0ZSB0aGlzIGNvbW1lbnQgcGVybWFuZW50bHk/IiwiQXV0b3BsYXkgbmV4dCB2aWRlbyI6IkF1dG9wbGF5IG5leHQgdmlkZW8iLCJCdXkge0RJU1BMQVlfUFJJQ0V9IjoiQnV5IHtESVNQTEFZX1BSSUNFfSIsImJ5IHtBUlRJU1RfTkFNRX0iOiJieSB7QVJUSVNUX05BTUV9IiwiQ2FuY2VsIjoiQ2FuY2VsIiwiQ2hhbmdlIHNldHRpbmdzLiI6IkNoYW5nZSBzZXR0aW5ncy4iLCJDaGFuZ2UgeW91ciBjb250ZW50IGZpbHRlciBwcmVmZXJlbmNlIjoiQ2hhbmdlIHlvdXIgY29udGVudCBmaWx0ZXIgcHJlZmVyZW5jZSIsIkNoYW5uZWxzIjoiQ2hhbm5lbHMiLCJDaG9vc2UgZmlsZSI6IkNob29zZSBmaWxlIiwiQ2xpY2sgaGVyZSB0byBhZGQgYSBuZXcgY29tbWVudCI6IkNsaWNrIGhlcmUgdG8gYWRkIGEgbmV3IGNvbW1lbnQiLCJDbGljayB0byBzaGFyZSB0aGlzIGNvbW1lbnQgb24ge1NPQ0lBTF9BUFB9IjoiQ2xpY2sgdG8gc2hhcmUgdGhpcyBjb21tZW50IG9uIHtTT0NJQUxfQVBQfSIsIkNvbGxlY3Rpb24gbmFtZSI6IkNvbGxlY3Rpb24gbmFtZSIsIkNvbW1lbnRzIGFyZSBkaXNhYmxlZC4iOiJDb21tZW50cyBhcmUgZGlzYWJsZWQuIiwiQ29tbWVudHMiOiJDb21tZW50cyIsIkNyZWF0aXZlIENvbW1vbnMgTGljZW5zZToiOiJDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2U6IiwiRGVsZXRlIjoiRGVsZXRlIiwiRGltZW5zaW9ucyI6IkRpbWVuc2lvbnMiLCJEb25cdTIwMTl0IHdvcnJ5ISBPbmx5IHlvdSAodGhlIGNyZWF0b3IpIGNhbiBkb3dubG9hZCB0aGlzIHZpZGVvLiI6IkRvblx1MjAxOXQgd29ycnkhIE9ubHkgeW91ICh0aGUgY3JlYXRvcikgY2FuIGRvd25sb2FkIHRoaXMgdmlkZW8uIiwiRG93bmxvYWQgY2FwdGlvbnMgYW5kIHN1YnRpdGxlcyI6IkRvd25sb2FkIGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMiLCJEb3dubG9hZCBMaW5rIjoiRG93bmxvYWQgTGluayIsIkRvd25sb2FkIjoiRG93bmxvYWQiLCJEdWUgdG8geW91ciBwcml2YWN5IHNldHRpbmdzLCB0aGlzIHZpZGVvIGNhbm5vdCBiZSBhZGRlZCB0byBjaGFubmVscyBvciBncm91cHMuIjoiRHVlIHRvIHlvdXIgcHJpdmFjeSBzZXR0aW5ncywgdGhpcyB2aWRlbyBjYW5ub3QgYmUgYWRkZWQgdG8gY2hhbm5lbHMgb3IgZ3JvdXBzLiIsIkVkaXQgU2V0dGluZ3MiOiJFZGl0IFNldHRpbmdzIiwiRWRpdCI6IkVkaXQiLCJFeGl0IGZ1bGxzY3JlZW4iOiJFeGl0IGZ1bGxzY3JlZW4iLCJGZXRjaCI6IkZldGNoIiwiRmlsZSBTaXplIjoiRmlsZSBTaXplIiwiRmlsZSI6IkZpbGUiLCJGaW5pc2hlcyI6IkZpbmlzaGVzIiwiRm9sbG93IjoiRm9sbG93IiwiRm9sbG93aW5nIjoiRm9sbG93aW5nIiwiRm9ybWVyIFZpbWVvIHN0YWZmIG1lbWJlciI6IkZvcm1lciBWaW1lbyBzdGFmZiBtZW1iZXIiLCJmcm9tIHtVU0VSX05BTUV9IjoiZnJvbSB7VVNFUl9OQU1FfSIsImZyb20ge1ZPRF9USVRMRX0iOiJmcm9tIHtWT0RfVElUTEV9IiwiR2V0IG1lIG91dCBvZiBoZXJlISI6IkdldCBtZSBvdXQgb2YgaGVyZSEiLCJHcm91cHMiOiJHcm91cHMiLCJIb3cgd2FzIHlvdXIgdmlld2luZyBleHBlcmllbmNlPyAiOiJIb3cgd2FzIHlvdXIgdmlld2luZyBleHBlcmllbmNlPyAiLCJJbmNvcnJlY3QgcmF0aW5nIjoiSW5jb3JyZWN0IHJhdGluZyIsIkp1c3QgY2hlY2sgeW91ciBpbmJveCBmb3IgYSBtZXNzYWdlIGZyb20gdXMgYW5kIHZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MuIFRoZW4geW91IGNhbiBkbyBhbGwga2luZHMgb2YgY29vbCBzdHVmZiBvbiBWaW1lbyEgKHtBfUhlbHB7XC9BfSkiOiJKdXN0IGNoZWNrIHlvdXIgaW5ib3ggZm9yIGEgbWVzc2FnZSBmcm9tIHVzIGFuZCB2ZXJpZnkgeW91ciBlbWFpbCBhZGRyZXNzLiBUaGVuIHlvdSBjYW4gZG8gYWxsIGtpbmRzIG9mIGNvb2wgc3R1ZmYgb24gVmltZW8hICh7QX1IZWxwe1wvQX0pIiwiTGVhcm4gYWJvdXQgb3RoZXIgdmlvbGF0aW9ucyI6IkxlYXJuIGFib3V0IG90aGVyIHZpb2xhdGlvbnMiLCJMZWFybiBhYm91dCBTdGF0cyI6IkxlYXJuIGFib3V0IFN0YXRzIiwiTGVhcm4gbW9yZSI6IkxlYXJuIG1vcmUiLCJMZWF2ZSB0aGUgZmlyc3QgY29tbWVudDoiOiJMZWF2ZSB0aGUgZmlyc3QgY29tbWVudDoiLCJMZXQgdXMga25vdy4iOiJMZXQgdXMga25vdy4iLCJMaWtlIHdoYXQgeW91IHNhdz8gU2VlIHRoZSBmdWxsIHRpdGxlLiI6Ikxpa2Ugd2hhdCB5b3Ugc2F3PyBTZWUgdGhlIGZ1bGwgdGl0bGUuIiwiTGlrZSI6Ikxpa2UiLCJMaWtlZCI6Ikxpa2VkIiwiTGlrZXMiOiJMaWtlcyIsIkxvYWQge0NPVU5UfSBwcmV2aW91cyBjb21tZW50Ijp7InNpbmd1bGFyIjoiTG9hZCB7Q09VTlR9IHByZXZpb3VzIGNvbW1lbnQiLCJwbHVyYWwiOiJMb2FkIHtDT1VOVH0gcHJldmlvdXMgY29tbWVudHMifSwiTG9hZGluZyI6IkxvYWRpbmciLCJNYW5hZ2UgY29sbGVjdGlvbnMiOiJNYW5hZ2UgY29sbGVjdGlvbnMiLCJNb25leW1ha2VyIjoiTW9uZXltYWtlciIsIm1vcmUiOiJtb3JlIiwiTmV4dCB2aWRlbyI6Ik5leHQgdmlkZW8iLCJOb3QgcGxheWluZyBuaWNlIjoiTm90IHBsYXlpbmcgbmljZSIsIk9ubHkgdmlzaWJsZSB0byB5b3UiOiJPbmx5IHZpc2libGUgdG8geW91IiwiT3JpZ2luYWwgZmlsZSBpcyBpbiB0aGUgYXJjaGl2ZSI6Ik9yaWdpbmFsIGZpbGUgaXMgaW4gdGhlIGFyY2hpdmUiLCJQZW5kaW5nIHN1Ym1pc3Npb24iOiJQZW5kaW5nIHN1Ym1pc3Npb24iLCJQZXJtYWxpbmsgdG8gdGhpcyBjb21tZW50IjoiUGVybWFsaW5rIHRvIHRoaXMgY29tbWVudCIsIlBsYXlzIjoiUGxheXMiLCJwbGVhc2UgbGV0IHVzIGtub3ciOiJwbGVhc2UgbGV0IHVzIGtub3ciLCJQb3J0Zm9saW9zIjoiUG9ydGZvbGlvcyIsIlByZXNlbnRlZCBieSB7QlJBTkRfTkFNRX1cdTIwMTlzIHtDQU1QQUlHTl9USVRMRX0iOiJQcmVzZW50ZWQgYnkge0JSQU5EX05BTUV9XHUyMDE5cyB7Q0FNUEFJR05fVElUTEV9IiwiUHJlc2lkZW50IG9mIHRoZSBVbml0ZWQgU3RhdGVzIjoiUHJlc2lkZW50IG9mIHRoZSBVbml0ZWQgU3RhdGVzIiwiUHJldmlvdXMgdmlkZW8iOiJQcmV2aW91cyB2aWRlbyIsIlB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiI6IlB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiIsIlJlYWQgbW9yZVx1MjAyNiI6IlJlYWQgbW9yZVx1MjAyNiIsIlJlamVjdCI6IlJlamVjdCIsIlJlbWVtYmVyIHRvIGJlIGNvb2wgYW5kIHBsYXkgbmljZSEiOiJSZW1lbWJlciB0byBiZSBjb29sIGFuZCBwbGF5IG5pY2UhIiwiUmVtb3ZlIGNyZWRpdCI6IlJlbW92ZSBjcmVkaXQiLCJSZW50IHtESVNQTEFZX1BSSUNFfSI6IlJlbnQge0RJU1BMQVlfUFJJQ0V9IiwiUmVwbGF5IjoiUmVwbGF5IiwiUmVwbHkgdG8gdGhpcyBjb21tZW50IjoiUmVwbHkgdG8gdGhpcyBjb21tZW50IiwiUmVwbHkiOiJSZXBseSIsIlJlcG9ydCB0aGlzIHZpZGVvIjoiUmVwb3J0IHRoaXMgdmlkZW8iLCJSZXBvcnQgdGhpcyB2aWRlbz8iOiJSZXBvcnQgdGhpcyB2aWRlbz8iLCJSZXRyeSB1cGxvYWQiOiJSZXRyeSB1cGxvYWQiLCJSZXZpZXcgcGFnZSI6IlJldmlldyBwYWdlIiwiU2VlIGFsbCB2aWRlbyBzdGF0cyI6IlNlZSBhbGwgdmlkZW8gc3RhdHMiLCJTZWUgZnVsbCBzdGF0aXN0aWNzIjoiU2VlIGZ1bGwgc3RhdGlzdGljcyIsIlNldHRpbmdzIjoiU2V0dGluZ3MiLCJTaGFyZSI6IlNoYXJlIiwiU2hvdyBtZSB0aGUgdmlkZW8iOiJTaG93IG1lIHRoZSB2aWRlbyIsIlNob3cgbW9yZVx1MjAyNiI6IlNob3cgbW9yZVx1MjAyNiIsIlNvdXJjZSBmaWxlcyBub3QgYWNjZXNzZWQgZm9yIDMwIGRheXMgYXJlIGF1dG9tYXRpY2FsbHkgc3RvcmVkIGluIG91ciBzZWNyZXQgdW5kZXJncm91bmQgc3RvcmFnZSBhcmNoaXZlLiBBcyBzdWNoLCBpdCBtYXkgdGFrZSBhIGZldyBob3VycyB0byByZXRyaWV2ZSB0aGUgZmlsZS4gU3RpbGwgd2FudCB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGU/IjoiU291cmNlIGZpbGVzIG5vdCBhY2Nlc3NlZCBmb3IgMzAgZGF5cyBhcmUgYXV0b21hdGljYWxseSBzdG9yZWQgaW4gb3VyIHNlY3JldCB1bmRlcmdyb3VuZCBzdG9yYWdlIGFyY2hpdmUuIEFzIHN1Y2gsIGl0IG1heSB0YWtlIGEgZmV3IGhvdXJzIHRvIHJldHJpZXZlIHRoZSBmaWxlLiBTdGlsbCB3YW50IHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZT8iLCJTcGFtIjoiU3BhbSIsIlN0YXRzIjoiU3RhdHMiLCJTdWJzY3JpYmUge0RJU1BMQVlfUFJJQ0V9XC97QklMTElOR19QRVJJT0R9IjoiU3Vic2NyaWJlIHtESVNQTEFZX1BSSUNFfVwve0JJTExJTkdfUEVSSU9EfSIsIlRoZSBwZXJzb24gd2hvIGFzc29jaWF0ZWQgYSB3b3JrIHdpdGggdGhpcyBkZWVkIGhhcyBkZWRpY2F0ZWQgdGhlIHdvcmsgdG8gdGhlIHB1YmxpYyBkb21haW4gYnkgd2FpdmluZyBhbGwgb2YgaGlzIG9yIGhlciByaWdodHMgdG8gdGhlIHdvcmsgd29ybGR3aWRlIHVuZGVyIGNvcHlyaWdodCBsYXcsIGluY2x1ZGluZyBhbGwgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzLCB0byB0aGUgZXh0ZW50IGFsbG93ZWQgYnkgbGF3LiBZb3UgY2FuIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQgcGVyZm9ybSB0aGUgd29yaywgZXZlbiBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgYWxsIHdpdGhvdXQgYXNraW5nIHBlcm1pc3Npb24uIjoiVGhlIHBlcnNvbiB3aG8gYXNzb2NpYXRlZCBhIHdvcmsgd2l0aCB0aGlzIGRlZWQgaGFzIGRlZGljYXRlZCB0aGUgd29yayB0byB0aGUgcHVibGljIGRvbWFpbiBieSB3YWl2aW5nIGFsbCBvZiBoaXMgb3IgaGVyIHJpZ2h0cyB0byB0aGUgd29yayB3b3JsZHdpZGUgdW5kZXIgY29weXJpZ2h0IGxhdywgaW5jbHVkaW5nIGFsbCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMsIHRvIHRoZSBleHRlbnQgYWxsb3dlZCBieSBsYXcuIFlvdSBjYW4gY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBwZXJmb3JtIHRoZSB3b3JrLCBldmVuIGZvciBjb21tZXJjaWFsIHB1cnBvc2VzLCBhbGwgd2l0aG91dCBhc2tpbmcgcGVybWlzc2lvbi4iLCJUaGUgcGVyc29uIHdobyB1cGxvYWRlZCB0aGlzIHZpZGVvIG9idmlvdXNseSBkaWRuXHUyMDE5dCBtYWtlIGl0IChpdFx1MjAxOXMgYSBUViBzaG93LCBtb3ZpZSB0cmFpbGVyLCBvciByaXBwZWQgZnJvbSBlbHNld2hlcmUgdGhlIHdlYi4pIjoiVGhlIHBlcnNvbiB3aG8gdXBsb2FkZWQgdGhpcyB2aWRlbyBvYnZpb3VzbHkgZGlkblx1MjAxOXQgbWFrZSBpdCAoaXRcdTIwMTlzIGEgVFYgc2hvdywgbW92aWUgdHJhaWxlciwgb3IgcmlwcGVkIGZyb20gZWxzZXdoZXJlIHRoZSB3ZWIuKSIsIlRoaXMgY29tbWVudCB3aWxsIGJlIHNoYXJlZCBvbiB7U09DSUFMX0FQUH0iOiJUaGlzIGNvbW1lbnQgd2lsbCBiZSBzaGFyZWQgb24ge1NPQ0lBTF9BUFB9IiwiVGhpcyBsaWNlbnNlIGFsbG93cyBmb3IgcmVkaXN0cmlidXRpb24sIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsLCBhcyBsb25nIGFzIGl0IGlzIHBhc3NlZCBhbG9uZyB1bmNoYW5nZWQgYW5kIGluIHdob2xlLCB3aXRoIGNyZWRpdCB0byB5b3UuIjoiVGhpcyBsaWNlbnNlIGFsbG93cyBmb3IgcmVkaXN0cmlidXRpb24sIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsLCBhcyBsb25nIGFzIGl0IGlzIHBhc3NlZCBhbG9uZyB1bmNoYW5nZWQgYW5kIGluIHdob2xlLCB3aXRoIGNyZWRpdCB0byB5b3UuIiwiVGhpcyBsaWNlbnNlIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlIG9mIG91ciBzaXggbWFpbiBsaWNlbnNlcywgb25seSBhbGxvd2luZyBvdGhlcnMgdG8gZG93bmxvYWQgeW91ciB3b3JrcyBhbmQgc2hhcmUgdGhlbSB3aXRoIG90aGVycyBhcyBsb25nIGFzIHRoZXkgY3JlZGl0IHlvdSwgYnV0IHRoZXkgY2FuXHUyMDE5dCBjaGFuZ2UgdGhlbSBpbiBhbnkgd2F5IG9yIHVzZSB0aGVtIGNvbW1lcmNpYWxseS4iOiJUaGlzIGxpY2Vuc2UgaXMgdGhlIG1vc3QgcmVzdHJpY3RpdmUgb2Ygb3VyIHNpeCBtYWluIGxpY2Vuc2VzLCBvbmx5IGFsbG93aW5nIG90aGVycyB0byBkb3dubG9hZCB5b3VyIHdvcmtzIGFuZCBzaGFyZSB0aGVtIHdpdGggb3RoZXJzIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91LCBidXQgdGhleSBjYW5cdTIwMTl0IGNoYW5nZSB0aGVtIGluIGFueSB3YXkgb3IgdXNlIHRoZW0gY29tbWVyY2lhbGx5LiIsIlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyBkaXN0cmlidXRlLCByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yaywgZXZlbiBjb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGZvciB0aGUgb3JpZ2luYWwgY3JlYXRpb24uIFRoaXMgaXMgdGhlIG1vc3QgYWNjb21tb2RhdGluZyBvZiBsaWNlbnNlcyBvZmZlcmVkLiBSZWNvbW1lbmRlZCBmb3IgbWF4aW11bSBkaXNzZW1pbmF0aW9uIGFuZCB1c2Ugb2YgbGljZW5zZWQgbWF0ZXJpYWxzLiI6IlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyBkaXN0cmlidXRlLCByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yaywgZXZlbiBjb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGZvciB0aGUgb3JpZ2luYWwgY3JlYXRpb24uIFRoaXMgaXMgdGhlIG1vc3QgYWNjb21tb2RhdGluZyBvZiBsaWNlbnNlcyBvZmZlcmVkLiBSZWNvbW1lbmRlZCBmb3IgbWF4aW11bSBkaXNzZW1pbmF0aW9uIGFuZCB1c2Ugb2YgbGljZW5zZWQgbWF0ZXJpYWxzLiIsIlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yayBldmVuIGZvciBjb21tZXJjaWFsIHB1cnBvc2VzLCBhcyBsb25nIGFzIHRoZXkgY3JlZGl0IHlvdSBhbmQgbGljZW5zZSB0aGVpciBuZXcgY3JlYXRpb25zIHVuZGVyIHRoZSBpZGVudGljYWwgdGVybXMuIFRoaXMgbGljZW5zZSBpcyBvZnRlbiBjb21wYXJlZCB0byAmbGRxdW87Y29weWxlZnQmcmRxdW87IGZyZWUgYW5kIG9wZW4gc291cmNlIHNvZnR3YXJlIGxpY2Vuc2VzLiBBbGwgbmV3IHdvcmtzIGJhc2VkIG9uIHlvdXJzIHdpbGwgY2FycnkgdGhlIHNhbWUgbGljZW5zZSwgc28gYW55IGRlcml2YXRpdmVzIHdpbGwgYWxzbyBhbGxvdyBjb21tZXJjaWFsIHVzZS4gVGhpcyBpcyB0aGUgbGljZW5zZSB1c2VkIGJ5IFdpa2lwZWRpYSwgYW5kIGlzIHJlY29tbWVuZGVkIGZvciBtYXRlcmlhbHMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gaW5jb3Jwb3JhdGluZyBjb250ZW50IGZyb20gV2lraXBlZGlhIGFuZCBzaW1pbGFybHkgbGljZW5zZWQgcHJvamVjdHMuIjoiVGhpcyBsaWNlbnNlIGxldHMgb3RoZXJzIHJlbWl4LCB0d2VhaywgYW5kIGJ1aWxkIHVwb24geW91ciB3b3JrIGV2ZW4gZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMsIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGFuZCBsaWNlbnNlIHRoZWlyIG5ldyBjcmVhdGlvbnMgdW5kZXIgdGhlIGlkZW50aWNhbCB0ZXJtcy4gVGhpcyBsaWNlbnNlIGlzIG9mdGVuIGNvbXBhcmVkIHRvICZsZHF1bztjb3B5bGVmdCZyZHF1bzsgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUgbGljZW5zZXMuIEFsbCBuZXcgd29ya3MgYmFzZWQgb24geW91cnMgd2lsbCBjYXJyeSB0aGUgc2FtZSBsaWNlbnNlLCBzbyBhbnkgZGVyaXZhdGl2ZXMgd2lsbCBhbHNvIGFsbG93IGNvbW1lcmNpYWwgdXNlLiBUaGlzIGlzIHRoZSBsaWNlbnNlIHVzZWQgYnkgV2lraXBlZGlhLCBhbmQgaXMgcmVjb21tZW5kZWQgZm9yIG1hdGVyaWFscyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBpbmNvcnBvcmF0aW5nIGNvbnRlbnQgZnJvbSBXaWtpcGVkaWEgYW5kIHNpbWlsYXJseSBsaWNlbnNlZCBwcm9qZWN0cy4iLCJUaGlzIGxpY2Vuc2UgbGV0cyBvdGhlcnMgcmVtaXgsIHR3ZWFrLCBhbmQgYnVpbGQgdXBvbiB5b3VyIHdvcmsgbm9uLWNvbW1lcmNpYWxseSwgYW5kIGFsdGhvdWdoIHRoZWlyIG5ldyB3b3JrcyBtdXN0IGFsc28gYWNrbm93bGVkZ2UgeW91IGFuZCBiZSBub24tY29tbWVyY2lhbCwgdGhleSBkb25cdTIwMTl0IGhhdmUgdG8gbGljZW5zZSB0aGVpciBkZXJpdmF0aXZlIHdvcmtzIG9uIHRoZSBzYW1lIHRlcm1zLiI6IlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yayBub24tY29tbWVyY2lhbGx5LCBhbmQgYWx0aG91Z2ggdGhlaXIgbmV3IHdvcmtzIG11c3QgYWxzbyBhY2tub3dsZWRnZSB5b3UgYW5kIGJlIG5vbi1jb21tZXJjaWFsLCB0aGV5IGRvblx1MjAxOXQgaGF2ZSB0byBsaWNlbnNlIHRoZWlyIGRlcml2YXRpdmUgd29ya3Mgb24gdGhlIHNhbWUgdGVybXMuIiwiVGhpcyBsaWNlbnNlIGxldHMgb3RoZXJzIHJlbWl4LCB0d2VhaywgYW5kIGJ1aWxkIHVwb24geW91ciB3b3JrIG5vbi1jb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGFuZCBsaWNlbnNlIHRoZWlyIG5ldyBjcmVhdGlvbnMgdW5kZXIgdGhlIGlkZW50aWNhbCB0ZXJtcy4iOiJUaGlzIGxpY2Vuc2UgbGV0cyBvdGhlcnMgcmVtaXgsIHR3ZWFrLCBhbmQgYnVpbGQgdXBvbiB5b3VyIHdvcmsgbm9uLWNvbW1lcmNpYWxseSwgYXMgbG9uZyBhcyB0aGV5IGNyZWRpdCB5b3UgYW5kIGxpY2Vuc2UgdGhlaXIgbmV3IGNyZWF0aW9ucyB1bmRlciB0aGUgaWRlbnRpY2FsIHRlcm1zLiIsIlRoaXMgc291cmNlIGZpbGUgaGFzIGJlZW4gbG92aW5nbHkgc3RvcmVkIGluIG91ciBhcmNoaXZlLiI6IlRoaXMgc291cmNlIGZpbGUgaGFzIGJlZW4gbG92aW5nbHkgc3RvcmVkIGluIG91ciBhcmNoaXZlLiIsIlRoaXMgdmlkZW8gY29udGFpbnMgaGFyYXNzbWVudCwgaW5jaXRlcyBoYXRyZWQsIG9yIGRlcGljdHMgZXh0cmVtZSBvciByZWFsLWxpZmUgdmlvbGVuY2UuIjoiVGhpcyB2aWRlbyBjb250YWlucyBoYXJhc3NtZW50LCBpbmNpdGVzIGhhdHJlZCwgb3IgZGVwaWN0cyBleHRyZW1lIG9yIHJlYWwtbGlmZSB2aW9sZW5jZS4iLCJUaGlzIHZpZGVvIGNvbnRhaW5zIHBvcm5vZ3JhcGh5LCBhZHZlcnRpc2VzIGEgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIGFuIGVyb3RpYyBuYXR1cmUsIG9yIHNlZW1zIHByaW1hcmlseSBmb2N1c2VkIG9uIHNleHVhbCBzdGltdWxhdGlvbi4iOiJUaGlzIHZpZGVvIGNvbnRhaW5zIHBvcm5vZ3JhcGh5LCBhZHZlcnRpc2VzIGEgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIGFuIGVyb3RpYyBuYXR1cmUsIG9yIHNlZW1zIHByaW1hcmlseSBmb2N1c2VkIG9uIHNleHVhbCBzdGltdWxhdGlvbi4iLCJUaGlzIHZpZGVvIGlzIGFsc28gaW4ge0NPVU5UfSBvdGhlciBjb2xsZWN0aW9uLiI6eyJzaW5ndWxhciI6IlRoaXMgdmlkZW8gaXMgYWxzbyBpbiB7Q09VTlR9IG90aGVyIGNvbGxlY3Rpb24uIiwicGx1cmFsIjoiVGhpcyB2aWRlbyBpcyBhbHNvIGluIHtDT1VOVH0gb3RoZXIgY29sbGVjdGlvbnMuIn0sIlRoaXMgdmlkZW8gaXMgYW4gYWR2ZXJ0aXNlbWVudCwgY29tbWVyY2lhbCwgb3IgaXMgYSB2aWRlbyB0aGF0IGFjdGl2ZWx5IHNlbGxzIGEgcHJvZHVjdCBvciBzZXJ2aWNlLiI6IlRoaXMgdmlkZW8gaXMgYW4gYWR2ZXJ0aXNlbWVudCwgY29tbWVyY2lhbCwgb3IgaXMgYSB2aWRlbyB0aGF0IGFjdGl2ZWx5IHNlbGxzIGEgcHJvZHVjdCBvciBzZXJ2aWNlLiIsIlRoaXMgdmlkZW8gaXMgaGlkZGVuIGZyb20gdmltZW8uY29tLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8ge1RJVExFfSI6IlRoaXMgdmlkZW8gaXMgaGlkZGVuIGZyb20gdmltZW8uY29tLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8ge1RJVExFfSIsIlRoaXMgdmlkZW8gaXMgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIGRyaXZlIHRyYWZmaWMgdG8gdGhpcmQgcGFydHkgc2l0ZXMsIHVzZSBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbiAoU0VPKSB0byBtYW5pcHVsYXRlIHNlYXJjaCByYW5raW5ncywgb3Igb3RoZXJ3aXNlIGRlY2VpdmUgb3IgbWlzbGVhZCB0aGUgYXVkaWVuY2UuIjoiVGhpcyB2aWRlbyBpcyBwcmltYXJpbHkgZGVzaWduZWQgdG8gZHJpdmUgdHJhZmZpYyB0byB0aGlyZCBwYXJ0eSBzaXRlcywgdXNlIFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uIChTRU8pIHRvIG1hbmlwdWxhdGUgc2VhcmNoIHJhbmtpbmdzLCBvciBvdGhlcndpc2UgZGVjZWl2ZSBvciBtaXNsZWFkIHRoZSBhdWRpZW5jZS4iLCJUaGlzIHZpZGVvIHNob3VsZCBiZSBtYXJrZWQgYXMgXHUyMDFjTWF0dXJlXHUyMDFkIGR1ZSB0byBudWRpdHksIHByb2Zhbml0eSwgdmlvbGVuY2UsIG9yIGRydWdcL2FsY29ob2wgdXNlLiI6IlRoaXMgdmlkZW8gc2hvdWxkIGJlIG1hcmtlZCBhcyBcdTIwMWNNYXR1cmVcdTIwMWQgZHVlIHRvIG51ZGl0eSwgcHJvZmFuaXR5LCB2aW9sZW5jZSwgb3IgZHJ1Z1wvYWxjb2hvbCB1c2UuIiwiVG9nZ2xlIHZpc2liaWxpdHkgb2Ygc3RhdHMgZ3JhcGgiOiJUb2dnbGUgdmlzaWJpbGl0eSBvZiBzdGF0cyBncmFwaCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJVbmxpa2UiOiJVbmxpa2UiLCJVcCBuZXh0IjoiVXAgbmV4dCIsInVwZGF0ZSB5b3VyIGNvbnRlbnQgcmF0aW5nIHByZWZlcmVuY2VzIjoidXBkYXRlIHlvdXIgY29udGVudCByYXRpbmcgcHJlZmVyZW5jZXMiLCJVcGdyYWRlIGFuZCB3ZVx1MjAxOWxsIGhvbGQgb24gdG8geW91ciBvcmlnaW5hbCB2aWRlbyBmaWxlcy4iOiJVcGdyYWRlIGFuZCB3ZVx1MjAxOWxsIGhvbGQgb24gdG8geW91ciBvcmlnaW5hbCB2aWRlbyBmaWxlcy4iLCJVcGxvYWRlZCBieSB7VVNFUn0iOiJVcGxvYWRlZCBieSB7VVNFUn0iLCJVcGxvYWRlciBkaWQgbm90IG1ha2UgdGhpcyI6IlVwbG9hZGVyIGRpZCBub3QgbWFrZSB0aGlzIiwiVXNlciB2ZXJpZmljYXRpb24iOiJVc2VyIHZlcmlmaWNhdGlvbiIsIlZlcmlmeSB5b3VyIGFjb3VudCI6IlZlcmlmeSB5b3VyIGFjb3VudCIsIlZlcmlmeSI6IlZlcmlmeSIsInZpYSB7QVBQX05BTUV9IjoidmlhIHtBUFBfTkFNRX0iLCJ2aWEge0NBTUVPfSI6InZpYSB7Q0FNRU99IiwiVmlkZW8gZmxhZ2dpbmcgZm9ybSI6IlZpZGVvIGZsYWdnaW5nIGZvcm0iLCJWaWV3IGFsbCBjYXRlZ29yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpZGVvIjoiVmlldyBhbGwgY2F0ZWdvcmllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWRlbyIsIlZpZXcgYWxsIHVzZXJzIGNyZWRpdGVkIGJ5IHRoaXMgdmlkZW8iOiJWaWV3IGFsbCB1c2VycyBjcmVkaXRlZCBieSB0aGlzIHZpZGVvIiwiVmlldyBhbGwiOiJWaWV3IGFsbCIsIlZpZXcgY2hhbm5lbCI6IlZpZXcgY2hhbm5lbCIsIlZpZXcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHZpZGVvIjoiVmlldyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdmlkZW8iLCJWaWV3IHRpdGxlIjoiVmlldyB0aXRsZSIsIlZpbWVvIEJ1c2luZXNzIHVzZXIiOiJWaW1lbyBCdXNpbmVzcyB1c2VyIiwiVmltZW8gY3VyYXRpb24gdGVhbSBtZW1iZXIiOiJWaW1lbyBjdXJhdGlvbiB0ZWFtIG1lbWJlciIsIlZpbWVvIHBhcnRuZXIiOiJWaW1lbyBwYXJ0bmVyIiwiVmltZW8gUGx1cyB1c2VyIjoiVmltZW8gUGx1cyB1c2VyIiwiVmltZW8gUHJvIHVzZXIiOiJWaW1lbyBQcm8gdXNlciIsIlZpbWVvIHNwb25zb3IiOiJWaW1lbyBzcG9uc29yIiwiVmltZW8gc3RhZmYgbWVtYmVyIjoiVmltZW8gc3RhZmYgbWVtYmVyIiwiVmltZW8gc3VwcG9ydCBzcGVjaWFsaXN0IjoiVmltZW8gc3VwcG9ydCBzcGVjaWFsaXN0IiwiV2FudCB0byBsZWF2ZSBhIGNvbW1lbnQ/IEZpcnN0IHlvdVx1MjAxOWxsIG5lZWQgdG8gdmVyaWZ5IHlvdXIgVmltZW8gYWNjb3VudC4iOiJXYW50IHRvIGxlYXZlIGEgY29tbWVudD8gRmlyc3QgeW91XHUyMDE5bGwgbmVlZCB0byB2ZXJpZnkgeW91ciBWaW1lbyBhY2NvdW50LiIsIldhbnQgdG8gbGVhdmUgYSBjb21tZW50PyI6IldhbnQgdG8gbGVhdmUgYSBjb21tZW50PyIsIldhdGNoIGl0IGFnYWluIjoiV2F0Y2ggaXQgYWdhaW4iLCJXZVx1MjAxOXJlIG9uIGl0ISBQbGVhc2UgY2hlY2sgYmFjayBsYXRlciwgYXMgaXQgY291bGQgdGFrZSBhIGZldyBob3Vycy4iOiJXZVx1MjAxOXJlIG9uIGl0ISBQbGVhc2UgY2hlY2sgYmFjayBsYXRlciwgYXMgaXQgY291bGQgdGFrZSBhIGZldyBob3Vycy4iLCJXaGVuIHlvdSBhZGQgdGhpcyBwcml2YXRlIHZpZGVvIHRvIGEgY29sbGVjdGlvbiwgdGhlIHZpZGVvIHdpbGwgYmUgdmlld2FibGUgd2l0aGluIHRoYXQgYWxidW0sIGdyb3VwLCBldGMuIjoiV2hlbiB5b3UgYWRkIHRoaXMgcHJpdmF0ZSB2aWRlbyB0byBhIGNvbGxlY3Rpb24sIHRoZSB2aWRlbyB3aWxsIGJlIHZpZXdhYmxlIHdpdGhpbiB0aGF0IGFsYnVtLCBncm91cCwgZXRjLiIsIldoeSBhcmUgeW91IHJlcG9ydGluZyB0aGlzIHZpZGVvPyI6IldoeSBhcmUgeW91IHJlcG9ydGluZyB0aGlzIHZpZGVvPyIsIldvdWxkIHlvdSBsaWtlIHRvIGluY2x1ZGUgdGhpcyB2aWRlbyBzdWJtaXR0ZWQgYnkge1VTRVJfTkFNRX0gaW4gdGhlIHtHUk9VUF9OQU1FfSBncm91cD8iOiJXb3VsZCB5b3UgbGlrZSB0byBpbmNsdWRlIHRoaXMgdmlkZW8gc3VibWl0dGVkIGJ5IHtVU0VSX05BTUV9IGluIHRoZSB7R1JPVVBfTkFNRX0gZ3JvdXA/IiwiWFhYLXJhdGVkIjoiWFhYLXJhdGVkIiwiWWVzLCBmZXRjaCBvcmlnaW5hbCBmaWxlIjoiWWVzLCBmZXRjaCBvcmlnaW5hbCBmaWxlIiwiWW91IGNhbiB7VVBEQVRFX1lPVVJfUFJFRkVSRU5DRVNfTElOS30gYXQgYW55IHRpbWUuIjoiWW91IGNhbiB7VVBEQVRFX1lPVVJfUFJFRkVSRU5DRVNfTElOS30gYXQgYW55IHRpbWUuIiwiWW91IGNhbm5vdCBjcmVhdGUge1RJVExFfSB3aGlsZSBpbiBQcml2YXRlIE1vZGUuIElmIHlvdSB0aGluayBpdCB3YXMgZmxhZ2dlZCBpbiBlcnJvciwge1BMRUFTRV9MRVRfVVNfS05PV19MSU5LfSI6IllvdSBjYW5ub3QgY3JlYXRlIHtUSVRMRX0gd2hpbGUgaW4gUHJpdmF0ZSBNb2RlLiBJZiB5b3UgdGhpbmsgaXQgd2FzIGZsYWdnZWQgaW4gZXJyb3IsIHtQTEVBU0VfTEVUX1VTX0tOT1dfTElOS30iLCJZb3UgbmVlZCBhIDM2MCBwbGF5ZXIgdG8gd2F0Y2ggdGhpcyBkb3dubG9hZC4ge0F9U2VlIG91ciByZWNvbW1lbmRhdGlvbnN7XC9BfS4iOiJZb3UgbmVlZCBhIDM2MCBwbGF5ZXIgdG8gd2F0Y2ggdGhpcyBkb3dubG9hZC4ge0F9U2VlIG91ciByZWNvbW1lbmRhdGlvbnN7XC9BfS4iLCJZb3VyIGFjY291bnQgaGFzIGJlZW4gZmxhZ2dlZCBmb3Igc3BhbS4gSWYgeW91IHRoaW5rIGl0IHdhcyBmbGFnZ2VkIGluIGVycm9yLCB7UExFQVNFX0xFVF9VU19LTk9XX0xJTkt9LiI6IllvdXIgYWNjb3VudCBoYXMgYmVlbiBmbGFnZ2VkIGZvciBzcGFtLiBJZiB5b3UgdGhpbmsgaXQgd2FzIGZsYWdnZWQgaW4gZXJyb3IsIHtQTEVBU0VfTEVUX1VTX0tOT1dfTElOS30uIiwie0NPVU5UfSBDYXRlZ29yeSI6eyJzaW5ndWxhciI6IntDT1VOVH0gQ2F0ZWdvcnkiLCJwbHVyYWwiOiJ7Q09VTlR9IENhdGVnb3JpZXMifSwie0NPVU5UfSBDb2xsZWN0aW9uIjp7InNpbmd1bGFyIjoie0NPVU5UfSBDb2xsZWN0aW9uIiwicGx1cmFsIjoie0NPVU5UfSBDb2xsZWN0aW9ucyJ9LCJ7Q09VTlR9IENvbW1lbnQiOnsic2luZ3VsYXIiOiJ7Q09VTlR9IENvbW1lbnQiLCJwbHVyYWwiOiJ7Q09VTlR9IENvbW1lbnRzIn0sIntDT1VOVH0gQ3JlZGl0Ijp7InNpbmd1bGFyIjoie0NPVU5UfSBDcmVkaXQiLCJwbHVyYWwiOiJ7Q09VTlR9IENyZWRpdHMifSwie0NPVU5UfSBMaWtlIjp7InNpbmd1bGFyIjoie0NPVU5UfSBMaWtlIiwicGx1cmFsIjoie0NPVU5UfSBMaWtlcyJ9LCJ7Q09VTlR9IFBob3RvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBQaG90byIsInBsdXJhbCI6IntDT1VOVH0gUGhvdG9zIn0sIntDT1VOVH0gUGxheSI6eyJzaW5ndWxhciI6IntDT1VOVH0gUGxheSIsInBsdXJhbCI6IntDT1VOVH0gUGxheXMifSwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIk5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiOiJObyBhY3Rpdml0eSBpbiB0aGUgcGFzdCAzMCBkYXlzIiwiU2VlIGFsbCI6IlNlZSBhbGwiLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC91dGlscy9wbGF5ZXJfbWFuYWdlci9wbGF5ZXJfbWFuYWdlci5taW4uanM/NTVhYjcwODMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIGlmICh0eXBlb2YgcGxheWVyQXNzZXRVcmxzICE9PSAndW5kZWZpbmVkJykgewogIFBsYXllck1hbmFnZXIucnVuKHBsYXllckFzc2V0VXJscyk7CiAgfQogPC9zY3JpcHQ+CgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3JlYWN0X3Byb2RfY29tYmluZWQubWluLmpzP2I2ZWU3YTRlIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9jbGlwX2NvbWJpbmVkLm1pbi5qcz9kYjRiOWFjMSI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWN0aXZpdHlfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81MzliNmM4MyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvX2J1bmRsZXMvY2xpcC5idW5kbGUubWluLmpzPzk1MGRlYjdiIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9tb2R1bGVzL2dsb2JhbC9hYmxpbmNvbG4vaG9zdF92aWRlb3MubWluLmpzPzY1ZGM0NTFhIj48L3NjcmlwdD4KCiA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvY2xpcF9iZXRhX2xpYnNfYXN5bmNfY29tYmluZWQubWluLmpzPzE4ZmJlNjlhIj48L3NjcmlwdD4KIDxzY3JpcHQgYXN5bmMgc3JjPSIvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogCiAgIGlmICghdmltZW8uYnlwYXNzX3BsYXllcl9yZXNwb25zaXZlX2RlbGVnYXRlcykgewogdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzIHx8IHt9OwogdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuU2hhcmVPdmVybGF5ID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuU2hhcmVPdmVybGF5IHx8IGZ1bmN0aW9uKGlkKSB7CiBQbGF5ZXJNYW5hZ2VyLnBhdXNlQWxsUGxheWVycygpOwogdmltZW8uc2hhcmUuUG9wdXAoaWQpOwogcmV0dXJuIGZhbHNlOwogfTsKCiB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5Mb2dpbkZvcm0gPSB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5Mb2dpbkZvcm0gfHwgZnVuY3Rpb24oaWQsIGNvbnRleHQpIHsKIGlmICh0eXBlb2YgdmltZW8uTW9kYWwgIT09ICd1bmRlZmluZWQnKSB7CiBQbGF5ZXJNYW5hZ2VyLnBhdXNlQWxsUGxheWVycygpOwoKIGlmIChjb250ZXh0KSB7CiB2aW1lby5TZXNzaW9uLmNyZWF0ZSh7IHBsYXllcjogMSwgY2xpcF9pZDogaWQsIGNvbnRleHQ6IGNvbnRleHQgfSk7CiB9CiBlbHNlIHsKIHZpbWVvLlNlc3Npb24uY3JlYXRlKCk7CiB9CgogcmV0dXJuIGZhbHNlOwogfQogfTsKCiBpZiAoUGxheWVyTWFuYWdlcikgewogUGxheWVyTWFuYWdlci5zZXREZWZhdWx0RGVsZWdhdGUodmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzKTsKIH0KIH0KIAogaWYgKFBsYXllck1hbmFnZXIpIHsKIFBsYXllck1hbmFnZXIuZGlzcGF0Y2hSZWFkeVNpZ25hbHMoKTsKIH0KIAogIH0KCiAgJChkb2N1bWVudCkucmVhZHkob25WaW1lb0RvbVJlYWR5KTsKICA8L3NjcmlwdD4KCiAgPHNjcmlwdD4KIHZhciBnb29nbGVfYWRfY2xpZW50ID0gJ2NhLWl3b24tdmltZW8nLAogZ29vZ2xlX2FkX291dHB1dCA9ICdqcycsCiBnb29nbGVfbWF4X251bV9hZHMgPSAnMycsCiBnb29nbGVfYWRfdHlwZSA9ICd0ZXh0JywKIGdvb2dsZV9lbmNvZGluZyA9ICd1dGY4JywKIGdvb2dsZV9mZWVkYmFjayA9ICdvbicsCiBnb29nbGVfa3dfdHlwZSA9ICdicm9hZCcsCiBnb29nbGVfa3cgPSAnJzsKCiBkb2N1bWVudC53cml0ZSgnPHNjcicrJ2lwdCBzcmM9Ii8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzIj48L3NjcicrJ2lwdD4nKTsKIDwvc2NyaXB0PiAKIDwvYm9keT4KPC9odG1sPgo=
148
- http_version:
149
- recorded_at: Mon, 27 Mar 2017 21:00:57 GMT
150
- - request:
151
- method: head
152
- uri: https://vimeo.com/193970014
153
- body:
154
- encoding: US-ASCII
155
- string: ''
156
- headers:
157
- User-Agent:
158
- - VideoInfo/2.7
159
- Accept:
160
- - "*/*"
161
- response:
162
- status:
163
- code: 200
164
- message: OK
165
- headers:
166
- Server:
167
- - nginx
168
- Content-Type:
169
- - text/html; charset=UTF-8
170
- Expires:
171
- - Mon, 27 Mar 2017 22:23:44 GMT
172
- X-Ua-Compatible:
173
- - IE=edge
174
- X-Xss-Protection:
175
- - 1; mode=block
176
- X-Content-Type-Options:
177
- - nosniff
178
- X-Frame-Options:
179
- - sameorigin
180
- Strict-Transport-Security:
181
- - max-age=15552000; includeSubDomains; preload
182
- Content-Security-Policy-Report-Only:
183
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
184
- /_csp'
185
- Via:
186
- - 1.1 varnish
187
- - 1.1 varnish
188
- - 1.1 varnish
189
- Cache-Control:
190
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
191
- X-Varnish-Cache:
192
- - '1'
193
- X-Vserver:
194
- - dfvimeowebproxy5
195
- Fastly-Debug-Digest:
196
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
197
- Content-Length:
198
- - '69340'
199
- Accept-Ranges:
200
- - bytes
201
- Date:
202
- - Mon, 27 Mar 2017 21:00:57 GMT
203
- Age:
204
- - '0'
205
- Connection:
206
- - keep-alive
207
- X-Served-By:
208
- - cache-iad2124-IAD, cache-lax8649-LAX
209
- X-Cache:
210
- - MISS, MISS
211
- X-Cache-Hits:
212
- - 0, 0
213
- X-Timer:
214
- - S1490648457.747212,VS0,VE85
215
- Vary:
216
- - User-Agent,Accept-Encoding
217
- body:
218
- encoding: UTF-8
219
- string: ''
220
- http_version:
221
- recorded_at: Mon, 27 Mar 2017 21:00:57 GMT
222
- recorded_with: VCR 3.0.3
@@ -1,75 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.vimeo.com/videos/193970014
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Authorization:
13
- - bearer 6b66b015a3504793b4f541d878f46ff6
14
- Accept:
15
- - application/vnd.vimeo.*+json;version=3.2
16
- Accept-Encoding:
17
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Server:
24
- - nginx
25
- Content-Type:
26
- - application/vnd.vimeo.video+json
27
- Cache-Control:
28
- - no-cache, max-age=315360000
29
- Strict-Transport-Security:
30
- - max-age=15552000; includeSubDomains; preload
31
- X-Ratelimit-Limit:
32
- - '500'
33
- X-Ratelimit-Remaining:
34
- - '479'
35
- X-Ratelimit-Reset:
36
- - '2017-03-27T21:16:18+00:00'
37
- Expires:
38
- - Thu, 25 Mar 2027 21:01:18 GMT
39
- Via:
40
- - 1.1 varnish
41
- - 1.1 varnish
42
- Fastly-Debug-Digest:
43
- - 3a9c2fa134ca353f2e91b32fde678202db24c84367cbf962c270ad644ca6482b
44
- Content-Length:
45
- - '1765'
46
- Accept-Ranges:
47
- - bytes
48
- Date:
49
- - Mon, 27 Mar 2017 21:01:18 GMT
50
- Age:
51
- - '0'
52
- Connection:
53
- - keep-alive
54
- X-Served-By:
55
- - cache-iad2147-IAD, cache-lax8637-LAX
56
- X-Cache:
57
- - MISS, MISS
58
- X-Cache-Hits:
59
- - 0, 0
60
- X-Timer:
61
- - S1490648478.173710,VS0,VE173
62
- Vary:
63
- - Accept,Vimeo-Client-Id,Accept-Encoding
64
- body:
65
- encoding: ASCII-8BIT
66
- string: '{"uri":"/videos/193970014","name":"Push ups with Dead Kennedys","description":"wrest-jumps
67
- , fist-jumps and fingers push ups","link":"https://vimeo.com/193970014","duration":25,"width":720,"language":"en","height":720,"embed":{"html":"<iframe
68
- src=\"https://player.vimeo.com/video/193970014?badge=0&autopause=0&player_id=0\"
69
- width=\"720\" height=\"720\" frameborder=\"0\" title=\"Push ups with Dead
70
- Kennedys\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"},"created_time":"2016-12-02T00:08:16+00:00","modified_time":"2017-03-17T04:06:05+00:00","release_time":"2016-12-02T00:08:16+00:00","content_rating":["unrated"],"license":null,"privacy":{"view":"anybody","embed":"public","download":false,"add":false,"comments":"anybody"},"pictures":{"uri":"/videos/193970014/pictures/607241994","active":true,"type":"custom","sizes":[{"width":100,"height":75,"link":"https://i.vimeocdn.com/video/607241994_100x75.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_100x75.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":200,"height":150,"link":"https://i.vimeocdn.com/video/607241994_200x150.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_200x150.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":295,"height":166,"link":"https://i.vimeocdn.com/video/607241994_295x166.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_295x166.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":640,"height":640,"link":"https://i.vimeocdn.com/video/607241994_640x640.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_640x640.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":960,"height":960,"link":"https://i.vimeocdn.com/video/607241994_960x960.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_960x960.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"},{"width":1280,"height":1280,"link":"https://i.vimeocdn.com/video/607241994_1280x1280.jpg?r=pad","link_with_play_button":"https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F607241994_1280x1280.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"}],"resource_key":"57b29bab9ca951ea7ecfff04cd24873adb93c7d5"},"tags":[{"uri":"/tags/deadkennedys","name":"deadkennedys","tag":"deadkennedys","canonical":"deadkennedys","metadata":{"connections":{"videos":{"uri":"/tags/deadkennedys/videos","options":["GET"],"total":149}}},"resource_key":"6c472ef895812b191db5dc449b5eb61438130ae2"},{"uri":"/tags/pushups","name":"pushups","tag":"pushups","canonical":"pushups","metadata":{"connections":{"videos":{"uri":"/tags/pushups/videos","options":["GET"],"total":965}}},"resource_key":"eefb73f36010fdf34ec581ac82863d6229a11213"},{"uri":"/tags/martialarts","name":"martialarts","tag":"martialarts","canonical":"martialarts","metadata":{"connections":{"videos":{"uri":"/tags/martialarts/videos","options":["GET"],"total":18627}}},"resource_key":"d4d87a0a8d0a3e4a6aadbe8cf6a486eacd1f659c"},{"uri":"/tags/kungfu","name":"kungfu","tag":"kungfu","canonical":"kungfu","metadata":{"connections":{"videos":{"uri":"/tags/kungfu/videos","options":["GET"],"total":7329}}},"resource_key":"e1261f6e80a26b18d8a66340830d22d747614d83"},{"uri":"/tags/training","name":"training","tag":"training","canonical":"training","metadata":{"connections":{"videos":{"uri":"/tags/training/videos","options":["GET"],"total":92506}}},"resource_key":"fe90efe4886028927fa31d4a0b465effcb2ea692"}],"stats":{"plays":47},"metadata":{"connections":{"comments":{"uri":"/videos/193970014/comments","options":["GET","POST"],"total":0},"credits":{"uri":"/videos/193970014/credits","options":["GET","POST"],"total":1},"likes":{"uri":"/videos/193970014/likes","options":["GET"],"total":0},"pictures":{"uri":"/videos/193970014/pictures","options":["GET","POST"],"total":1},"texttracks":{"uri":"/videos/193970014/texttracks","options":["GET","POST"],"total":0},"related":null},"interactions":{"watchlater":{"added":false,"added_time":null,"uri":"/users/22881647/watchlater/193970014"},"like":{"added":false,"added_time":null,"uri":"/users/22881647/likes/193970014"}}},"user":{"uri":"/users/58200963","name":"Yan
71
- Dubravski","link":"https://vimeo.com/yandub","location":"Earth","bio":"Martial
72
- arts music videos.","created_time":"2016-10-23T16:36:12+00:00","account":"basic","pictures":{"uri":"/users/58200963/pictures/16928380","active":true,"type":"custom","sizes":[{"width":30,"height":30,"link":"https://i.vimeocdn.com/portrait/16928380_30x30?r=pad"},{"width":75,"height":75,"link":"https://i.vimeocdn.com/portrait/16928380_75x75?r=pad"},{"width":100,"height":100,"link":"https://i.vimeocdn.com/portrait/16928380_100x100?r=pad"},{"width":300,"height":300,"link":"https://i.vimeocdn.com/portrait/16928380_300x300?r=pad"}],"resource_key":"a8920a98c8a7ad4404501d5fbc2ddabdaf85b036"},"websites":[{"name":"insta","link":"http://instagram.com/yan.dubravski","description":null}],"metadata":{"connections":{"activities":{"uri":"/users/58200963/activities","options":["GET"]},"albums":{"uri":"/users/58200963/albums","options":["GET"],"total":0},"appearances":{"uri":"/users/58200963/appearances","options":["GET"],"total":0},"channels":{"uri":"/users/58200963/channels","options":["GET"],"total":7},"feed":{"uri":"/users/58200963/feed","options":["GET"]},"followers":{"uri":"/users/58200963/followers","options":["GET"],"total":0},"following":{"uri":"/users/58200963/following","options":["GET"],"total":26},"groups":{"uri":"/users/58200963/groups","options":["GET"],"total":0},"likes":{"uri":"/users/58200963/likes","options":["GET"],"total":1},"moderated_channels":{"uri":"/users/58200963/channels?filter=moderated","options":["GET"],"total":0},"portfolios":{"uri":"/users/58200963/portfolios","options":["GET"],"total":0},"videos":{"uri":"/users/58200963/videos","options":["GET"],"total":4},"shared":{"uri":"/users/58200963/shared/videos","options":["GET"],"total":0},"pictures":{"uri":"/users/58200963/pictures","options":["GET","POST"],"total":1}},"interactions":{"follow":{"added":false,"added_time":null,"uri":"/users/22881647/following/58200963"}}},"resource_key":"41afb6784674550677bda62835732cc7ac7325c1","preferences":{"videos":{"privacy":null}}},"app":null,"status":"available","resource_key":"ab0790e0c66255bc5c9a66a4c30b072b27735eb2","embed_presets":null}'
73
- http_version:
74
- recorded_at: Mon, 27 Mar 2017 21:01:18 GMT
75
- recorded_with: VCR 3.0.3
@@ -1,222 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: https://vimeo.com/193970014
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.7
12
- Accept:
13
- - "*/*"
14
- response:
15
- status:
16
- code: 200
17
- message: OK
18
- headers:
19
- Server:
20
- - nginx
21
- Content-Type:
22
- - text/html; charset=UTF-8
23
- Expires:
24
- - Mon, 27 Mar 2017 22:23:44 GMT
25
- X-Ua-Compatible:
26
- - IE=edge
27
- X-Xss-Protection:
28
- - 1; mode=block
29
- X-Content-Type-Options:
30
- - nosniff
31
- X-Frame-Options:
32
- - sameorigin
33
- Strict-Transport-Security:
34
- - max-age=15552000; includeSubDomains; preload
35
- Content-Security-Policy-Report-Only:
36
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
37
- /_csp'
38
- Via:
39
- - 1.1 varnish
40
- - 1.1 varnish
41
- - 1.1 varnish
42
- Cache-Control:
43
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
44
- X-Varnish-Cache:
45
- - '1'
46
- X-Vserver:
47
- - dfvimeowebproxy5
48
- Fastly-Debug-Digest:
49
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
50
- Content-Length:
51
- - '69340'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Mon, 27 Mar 2017 21:00:57 GMT
56
- Age:
57
- - '0'
58
- Connection:
59
- - keep-alive
60
- X-Served-By:
61
- - cache-iad2149-IAD, cache-lax8640-LAX
62
- X-Cache:
63
- - MISS, MISS
64
- X-Cache-Hits:
65
- - 0, 0
66
- X-Timer:
67
- - S1490648457.892783,VS0,VE86
68
- Vary:
69
- - User-Agent,Accept-Encoding
70
- body:
71
- encoding: UTF-8
72
- string: ''
73
- http_version:
74
- recorded_at: Mon, 27 Mar 2017 21:00:57 GMT
75
- - request:
76
- method: get
77
- uri: https://vimeo.com/193970014
78
- body:
79
- encoding: US-ASCII
80
- string: ''
81
- headers:
82
- Accept-Encoding:
83
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
84
- Accept:
85
- - "*/*"
86
- User-Agent:
87
- - Ruby
88
- response:
89
- status:
90
- code: 200
91
- message: OK
92
- headers:
93
- Server:
94
- - nginx
95
- Content-Type:
96
- - text/html; charset=UTF-8
97
- Expires:
98
- - Mon, 27 Mar 2017 22:23:44 GMT
99
- X-Ua-Compatible:
100
- - IE=edge
101
- X-Xss-Protection:
102
- - 1; mode=block
103
- X-Content-Type-Options:
104
- - nosniff
105
- X-Frame-Options:
106
- - sameorigin
107
- Strict-Transport-Security:
108
- - max-age=15552000; includeSubDomains; preload
109
- Content-Security-Policy-Report-Only:
110
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
111
- /_csp'
112
- Via:
113
- - 1.1 varnish
114
- - 1.1 varnish
115
- - 1.1 varnish
116
- Cache-Control:
117
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
118
- X-Varnish-Cache:
119
- - '1'
120
- X-Vserver:
121
- - dfvimeowebproxy5
122
- Fastly-Debug-Digest:
123
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
124
- Content-Length:
125
- - '19701'
126
- Accept-Ranges:
127
- - bytes
128
- Date:
129
- - Mon, 27 Mar 2017 21:00:58 GMT
130
- Age:
131
- - '0'
132
- Connection:
133
- - keep-alive
134
- X-Served-By:
135
- - cache-iad2139-IAD, cache-lax8630-LAX
136
- X-Cache:
137
- - MISS, MISS
138
- X-Cache-Hits:
139
- - 0, 0
140
- X-Timer:
141
- - S1490648458.009748,VS0,VE90
142
- Vary:
143
- - User-Agent,Accept-Encoding
144
- body:
145
- encoding: ASCII-8BIT
146
- string: !binary |-
147
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCiAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IlZpbWVvIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vdmltZW8uY29tLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0iYXJ0aWNsZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwcyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXBkYXRlZF90aW1lIiBjb250ZW50PSIyMDE3LTAzLTE3VDAwOjA2OjA1LTA0OjAwIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9maWx0ZXIvb3ZlcmxheT9zcmMwPWh0dHBzJTNBJTJGJTJGaS52aW1lb2Nkbi5jb20lMkZ2aWRlbyUyRjYwNzI0MTk5NF8xMjgweDEyODAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZTpzZWN1cmVfdXJsIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNjA3MjQxOTk0XzEyODB4MTI4MC5qcGcmc3JjMT1odHRwcyUzQSUyRiUyRmYudmltZW9jZG4uY29tJTJGaW1hZ2VzX3Y2JTJGc2hhcmUlMkZwbGF5X2ljb25fb3ZlcmxheS5wbmciPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOnR5cGUiIGNvbnRlbnQ9ImltYWdlL2pwZyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOmhlaWdodCIgY29udGVudD0iMTI4MCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6aW9zOmFwcF9uYW1lIiBjb250ZW50PSJWaW1lbyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6aW9zOmFwcF9zdG9yZV9pZCIgY29udGVudD0iNDI1MTk0NzU5Ij4KICAgIDxtZXRhIHByb3BlcnR5PSJhbDppb3M6dXJsIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6YW5kcm9pZDphcHBfbmFtZSIgY29udGVudD0iVmltZW8iPgogICAgPG1ldGEgcHJvcGVydHk9ImFsOmFuZHJvaWQ6cGFja2FnZSIgY29udGVudD0iY29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAiPgogICAgPG1ldGEgcHJvcGVydHk9ImFsOmFuZHJvaWQ6dXJsIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYWw6d2ViOnNob3VsZF9mYWxsYmFjayIgY29udGVudD0idHJ1ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0idmlkZW86ZGlyZWN0b3IiIGNvbnRlbnQ9Imh0dHBzOi8vdmltZW8uY29tL3lhbmR1YiI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9ImRlYWRrZW5uZWR5cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9InB1c2h1cHMiPgogICAgPG1ldGEgcHJvcGVydHk9ImFydGljbGU6dGFnIiBjb250ZW50PSJtYXJ0aWFsYXJ0cyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9Imt1bmdmdSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0iYXJ0aWNsZTp0YWciIGNvbnRlbnQ9InRyYWluaW5nIj4KICAKICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0id3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InBsYXllciI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAdmltZW8iPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0id3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2ZpbHRlci9vdmVybGF5P3NyYzA9aHR0cHMlM0ElMkYlMkZpLnZpbWVvY2RuLmNvbSUyRnZpZGVvJTJGNjA3MjQxOTk0XzEyODB4MTI4MC5qcGcmYW1wO3NyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnBsYXllciIgY29udGVudD0iaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzE5Mzk3MDAxNCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpwbGF5ZXI6d2lkdGgiIGNvbnRlbnQ9IjEyODAiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6cGxheWVyOmhlaWdodCIgY29udGVudD0iMTI4MCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAdmltZW8iPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOm5hbWU6aXBob25lIiBjb250ZW50PSJWaW1lbyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6aXBob25lIiBjb250ZW50PSI0MjUxOTQ3NTkiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDppcGhvbmUiIGNvbnRlbnQ9InZpbWVvOi8vYXBwLnZpbWVvLmNvbS92aWRlb3MvMTkzOTcwMDE0Ij4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDpuYW1lOmlwYWQiIGNvbnRlbnQ9IlZpbWVvIj4KICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmFwcDppZDppcGFkIiBjb250ZW50PSI0MjUxOTQ3NTkiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDppcGFkIiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6bmFtZTpnb29nbGVwbGF5IiBjb250ZW50PSJWaW1lbyI+CiAgPG1ldGEgbmFtZT0idHdpdHRlcjphcHA6aWQ6Z29vZ2xlcGxheSIgY29udGVudD0iY29tLnZpbWVvLmFuZHJvaWQudmlkZW9hcHAiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6YXBwOnVybDpnb29nbGVwbGF5IiBjb250ZW50PSJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCI+CgoKCgogPGxpbmsgPgogPGxpbmsgPgogPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkYxOTM5NzAwMTQiIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24rb2VtYmVkIiB0aXRsZT0iUHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzIj4KIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLnhtbD91cmw9aHR0cHMlM0ElMkYlMkZ2aW1lby5jb20lMkYxOTM5NzAwMTQiIHR5cGU9InRleHQveG1sK29lbWJlZCIgdGl0bGU9IlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyI+CiA8bGluayByZWw9InBpbmdiYWNrIiBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9fcGluZ2JhY2siPgogPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Ii8xOTM5NzAwMTQiPgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlB1c2ggdXBzIHdpdGggRGVhZCBLZW5uZWR5cyBvbiBWaW1lbzwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvZ2xvYmFsL2ljb25fZm9udHMubWluLmNzcz9ERVYiPgoKIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9jbGlwX2JldGFfY29tYmluZWQubWluLmNzcz9lYTUzODYzYiI+CgoKCiA8c2NyaXB0PgogIAogIHZhciBwbGF5ZXJBc3NldFVybHMgPSB7ImpzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvcGxheWVyLmpzIiwibW9vZyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvZmxhc2hcL21vb2dhbG9vcFwvNi40LjVcL21vb2dhbG9vcC5zd2YiLCJjaHJvbWVsZXNzX2NzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvY3NzXC9jaHJvbWVsZXNzLmNzcyIsImNocm9tZWxlc3NfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9jaHJvbWVsZXNzLmpzIiwibW9vZ19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL21vb2dhbG9vcC5qcyIsImNzcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvY3NzXC9wbGF5ZXIuY3NzIiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20ifTsKCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB3aW5kb3cgPSBfZXh0ZW5kKHdpbmRvdywgeyJ2aW1lb19lc2kiOnsiY29uZmlnIjp7ImF1dG9jb21wbGV0ZV9lbmFibGVkIjp0cnVlfX0sImdsb2JhbF9ub3RpZmljYXRpb25zIjpbXX0pOwo8L3NjcmlwdD4KCiA8c3R5bGUgaWQ9ImVzaV9yaWJib24iPgogLmVzaV9yaWJib24gewogYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjI1MDAlMjIlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjE0JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMjhhMWQ4JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxNCUyMiUyMHdpZHRoJTNEJTIyMzMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyNDhiYzclMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQ3JTIyJTIwd2lkdGglM0QlMjIxMCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzFlMzk1NSUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNTclMjIlMjB3aWR0aCUzRCUyMjI3JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzMmY1MTMyJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI4NCUyMiUyMHdpZHRoJTNEJTIyNiUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzQxNjgyOCUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyOTAlMjIlMjB3aWR0aCUzRCUyMjMxJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzN2VhYTI5JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxMjElMjIlMjB3aWR0aCUzRCUyMjM4JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzZGNiZDQyJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIxNTklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2FkMjclMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE2MiUyMiUyMHdpZHRoJTNEJTIyMjYlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNlMzlhMjMlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjE4OCUyMiUyMHdpZHRoJTNEJTIyMTU0JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzY2M1NTRjJTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjIzNDIlMjIlMjB3aWR0aCUzRCUyMjclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNjYTQ3M2YlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0OSUyMiUyMHdpZHRoJTNEJTIyMTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNhNzI4MzQlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM2NiUyMiUyMHdpZHRoJTNEJTIyNDglMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3MzU2NzUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQxNCUyMiUyMHdpZHRoJTNEJTIyNzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM2NTNlNjYlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjQ4OCUyMiUyMHdpZHRoJTNEJTIyMTIlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMzYjMxNWIlMjIlMkYlM0UlM0MlMkZzdmclM0UlMEEpIHRvcCBsZWZ0LzUwMHB4IDEwMCUgcmVwZWF0LXggIWltcG9ydGFudDsKIH0KIDwvc3R5bGU+CiAKIDxzY3JpcHQ+CiB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiBhYmxpbmNvbG5fY29uZmlnLnRlc3RzID0geyJERlBBZENvaG9ydHMiOnsiaWQiOjY5LCJuYW1lIjoiREZQQWRDb2hvcnRzIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119LCJFeHBsb3JlIjp7ImlkIjo2NCwibmFtZSI6IkV4cGxvcmUiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcLyIsImV4cGVyaW1lbnRzIjpbXX0sIlRvcE5hdkFCIjp7ImlkIjo2NywibmFtZSI6IlRvcE5hdkFCIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZDb3B5VGVzdCI6eyJpZCI6NzcsIm5hbWUiOiJUb3BOYXZDb3B5VGVzdCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvYWJvdXQiLCJleHBlcmltZW50cyI6W119LCJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiOnsiaWQiOjEwMywibmFtZSI6IlRvcE5hdi5Ib3N0VmlkZW9zTGluayIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiVmlkZW9QYWdlLlZpZXdlclNlZ21lbnRhdGlvblN1cnZleSI6eyJpZCI6OTIsIm5hbWUiOiJWaWRlb1BhZ2UuVmlld2VyU2VnbWVudGF0aW9uU3VydmV5IiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119LCJEZXNrdG9wT3V0cm8iOnsiaWQiOjg0LCJuYW1lIjoiRGVza3RvcE91dHJvIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjpudWxsLCJleHBlcmltZW50cyI6W119fTsKIDwvc2NyaXB0PgoKCiAKIDxzY3JpcHQ+CiB2YXIgZ29vZ2xldGFnID0gZ29vZ2xldGFnIHx8IHt9LAogZ3B0YWRzbG90cyA9IFtdLAogbGFuZ3VhZ2UsCiBoYXNfdXBsb2FkZWQsCiBjb2hvcnQ7CiBnb29nbGV0YWcuY21kID0gZ29vZ2xldGFnLmNtZCB8fCBbXTsKCiAoZnVuY3Rpb24oKSB7CiB2YXIgZ2FkcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLAogdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiBub2RlOwogZ2Fkcy5hc3luYyA9IHRydWU7CiBnYWRzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKIGdhZHMuc3JjID0gKHVzZVNTTCA/ICdodHRwczonIDogJ2h0dHA6JykgKyAnLy93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL3RhZy9qcy9ncHQuanMnOwogbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2Fkcywgbm9kZSk7CiB9KSgpOwoKIGdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsKIAogIGxhbmd1YWdlID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWxhbmd1YWdlXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIik7CiBoYXNfdXBsb2FkZWQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKWhhc191cGxvYWRlZFxzKlw9XHMqKFteO10qKS4qJCl8Xi4qJC8sICIkMSIpKSA/ICdZJyA6ICdOJzsKIAogY29ob3J0ID0gKHdpbmRvdy5BQkxpbmNvbG4pID8gd2luZG93LkFCTGluY29sbi5nZXRUZXN0KCdERlBBZENvaG9ydHMnKS5nZXQoJ2NvaG9ydCcsICdBJykgOiAnQSc7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbGFuZ3VhZ2UnLCBbbGFuZ3VhZ2VdKTsKIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2lzX3VwbG9hZGVyJywgW2hhc191cGxvYWRlZF0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2EnLCBbKGNvaG9ydCA9PT0gJ0EnKSA/ICdZJyA6ICdOJ10pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0X2InLCBbKGNvaG9ydCA9PT0gJ0InKSA/ICdZJyA6ICdOJ10pOwoKICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdzZWMnLCBbJ2ZhbHNlJ10pOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xvZ2dlZF9pbicsIFsnZmFsc2UnXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3JwdicsIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKSsxKS50b1N0cmluZygpKTsKCiBnb29nbGV0YWcucHViYWRzKCkuZW5hYmxlQXN5bmNSZW5kZXJpbmcoKTsKIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpOwogfSk7CiA8L3NjcmlwdD4KCjxzY3JpcHQ+CiFmdW5jdGlvbigpe3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpleHBvcnRzLHI9W107aWYoZS5wZXJmb3JtYW5jZXx8KGUucGVyZm9ybWFuY2U9e30pLGUucGVyZm9ybWFuY2Uubm93fHwoZS5wZXJmb3JtYW5jZS5ub3c9cGVyZm9ybWFuY2Uubm93fHxwZXJmb3JtYW5jZS53ZWJraXROb3d8fHBlcmZvcm1hbmNlLm1zTm93fHxwZXJmb3JtYW5jZS5tb3pOb3cpLCFlLnBlcmZvcm1hbmNlLm5vdyl7dmFyIG49RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGU7cGVyZm9ybWFuY2UudGltaW5nJiZwZXJmb3JtYW5jZS50aW1pbmcmJihuPXBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpLGUucGVyZm9ybWFuY2Uubm93PWZ1bmN0aW9uKCl7dmFyIGU9RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGU7cmV0dXJuIGUtbn19ZS5wZXJmb3JtYW5jZS5tYXJrfHwoZS5wZXJmb3JtYW5jZS5tYXJrPWUucGVyZm9ybWFuY2Uud2Via2l0TWFyaz9lLnBlcmZvcm1hbmNlLndlYmtpdE1hcms6ZnVuY3Rpb24obil7ci5mb3JFYWNoKGZ1bmN0aW9uKGUscixhKXtlLm5hbWU9PT1uJiZhLnNwbGljZShyLDEpfSksci5wdXNoKHtuYW1lOm4sZW50cnlUeXBlOiJtYXJrIixzdGFydFRpbWU6ZS5wZXJmb3JtYW5jZS5ub3coKSxkdXJhdGlvbjowfSl9KSxlLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGV8fChlLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGU9ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlP2UucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5VHlwZTpmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihyKXtyZXR1cm4gci5lbnRyeVR5cGU9PT1lfTtyZXR1cm4tMSE9PVsibWFyayIsIm1lYXN1cmUiXS5pbmRleE9mKGUpP3IuZmlsdGVyKG4pOnZvaWQgMH0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiByLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gci5uYW1lPT09ZX0pfSksZS5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWVhc3VyZXM6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtZWFzdXJlIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UuY2xlYXJNYXJrc3x8KGUucGVyZm9ybWFuY2UuY2xlYXJNYXJrcz1lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M/ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1hcmtzOmZ1bmN0aW9uKCl7ci5mb3JFYWNoKGZ1bmN0aW9uKGUscixuKXsibWFyayI9PT1lLmVudHJ5VHlwZSYmbi5zcGxpY2UociwxKX0pLHI9W119KSxlLnBlcmZvcm1hbmNlLm1lYXN1cmV8fChlLnBlcmZvcm1hbmNlLm1lYXN1cmU9ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlP2UucGVyZm9ybWFuY2Uud2Via2l0TWVhc3VyZTpmdW5jdGlvbihlLG4sYSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lJiYibWFyayI9PT1yLmVudHJ5VHlwZX19LG89ci5maWx0ZXIodChuKSlbMF0sbT1yLmZpbHRlcih0KGEpKVswXSxpPW0uc3RhcnRUaW1lLW8uc3RhcnRUaW1lO3IucHVzaCh7bmFtZTplLGVudHJ5VHlwZToibWVhc3VyZSIsc3RhcnRUaW1lOm8uc3RhcnRUaW1lLGR1cmF0aW9uOml9KX0pfSgpLHdpbmRvdy5tYXJrVXNlclRpbWU9ZnVuY3Rpb24oZSl7dmFyIHI9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZnVuY3Rpb24oZSl7c2V0VGltZW91dChlLDApfTtyKGZ1bmN0aW9uKCl7d2luZG93LnBlcmZvcm1hbmNlLm1hcmsoZSksd2luZG93LmNvbnNvbGUmJmNvbnNvbGUudGltZVN0YW1wJiZjb25zb2xlLnRpbWVTdGFtcChlKX0pfTsKCihmdW5jdGlvbigpIHsKIHdpbmRvdy5tYXJrVXNlclRpbWUgPSBmdW5jdGlvbihsYWJlbCkgewogd2luZG93Ll9ndG0gPSB3aW5kb3cuX2d0bSB8fCBbXTsKCiAvLyBFeGl0IGVhcmx5IGlmIHRoZSBicm93c2VyIGNhbid0IGhhbmRsZSBuZXcgdGhpbmdzCiBpZiAodHlwZW9mIHBlcmZvcm1hbmNlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UubWFyayAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyAhPT0gJ2Z1bmN0aW9uJykgewogcmV0dXJuOwogfQoKIHZhciB1aWQgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc3BsaXQoJzAuJylbMV0pICsgbmV3IERhdGUoKS5nZXRUaW1lKCksCiBtYXJrX25hbWUgPSBsYWJlbCArICdfJyArIHVpZCwKIHBhcnRzID0gbGFiZWwuc3BsaXQoJ3wnKSwKIGNhdGVnb3J5ID0gcGFydHNbMF0sCiB2YXJpYWJsZSA9IHBhcnRzWzFdLAogbGFiZWwgPSBwYXJ0c1syXSwKIG1hcmtfdGltZSwKIG1hcmtfZW50cmllczsKCiBwZXJmb3JtYW5jZS5tYXJrKG1hcmtfbmFtZSk7CiBtYXJrX2VudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKG1hcmtfbmFtZSk7CgogaWYgKG1hcmtfZW50cmllcy5sZW5ndGgpIHsKIG1hcmtfdGltZSA9IG1hcmtfZW50cmllc1swXS5zdGFydFRpbWU7CiB3aW5kb3cuX2d0bS5wdXNoKHsKICdldmVudCc6ICdwZXJmb3JtYW5jZV90aW1pbmcnLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5jYXRlZ29yeSc6IGNhdGVnb3J5LAogJ3BlcmZvcm1hbmNlX3RpbWluZy52YXJpYWJsZSc6IHZhcmlhYmxlLAogJ3BlcmZvcm1hbmNlX3RpbWluZy50aW1lJzogbWFya190aW1lIC8gMTAwMCwKICdwZXJmb3JtYW5jZV90aW1pbmcubGFiZWwnOiBsYWJlbAogfSk7CiB9CiB9Owp9KCkpOwo8L3NjcmlwdD4KCiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWJsaW5jb2xuX2NvbWJpbmVkLm1pbi5qcz80NjQyMzBmMCI+PC9zY3JpcHQ+CgoKCiA8L2hlYWQ+CiA8Ym9keSBjbGFzcz0ib25zaXRlICI+CiA8ZGl2IGlkPSJ3cmFwIiBjbGFzcz0ib3V0ZXJfd3JhcCI+CiAKIDxkaXYgY2xhc3M9ImJvZHlfcmliYm9uIGVzaV9yaWJib24iPjwvZGl2PgoKIAogCjxzY3JpcHQ+CiB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0Pgo8ZGl2IGlkPSJ0b3BuYXZfZGVza3RvcCIgY2xhc3M9InRvcG5hdl9kZXNrdG9wICIgcm9sZT0iYmFubmVyIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3dyYXBwZXIiPgoKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX2xvZ28iIGhyZWY9Ii8vdmltZW8uY29tIiBhbHQ9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgdGl0bGU9IkdvIHRvIFZpbWVvIGhvbWUgcGFnZSIgYXJpYS1sYWJlbD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp2aW1lb19ob21lIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9ob21lX2NsaWNrIj4KICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogIDwvYT4KIAogICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImpvaW4iPgogPGEgY2xhc3M9InRvcG5hdl9tZW51X2pvaW4ganMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2pvaW4/bW9kYWw9bmV3J30pIiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGpvaW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmpvaW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2pvaW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2pvaW4iIHRpdGxlPSJCZWNvbWUgYSBWaW1lbyBtZW1iZXIiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9qb2luIj4KIEpvaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ibG9naW4iPgogPGEgY2xhc3M9ImpzLXRvcG5hdl9tZW51X2F1dGgiIG9uY2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7dmltZW8uU2Vzc2lvbi5jcmVhdGUoJ3JlZycsIG51bGwsIHRydWUpOyIgZGF0YS1nYS1ldmVudC1jbGljaz0idG9wX25hdnxsb2dpbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bG9naW4iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2xvZ2luX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9sb2dfaW4iIHRpdGxlPSJMb2cgaW4gdG8geW91ciBhY2NvdW50IiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogTG9nIGluIDwvYT4KCiAgIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9ImNyZWF0ZSI+CiA8YSBjbGFzcz0ianMtdG9wbmF2LWNyZWF0ZSB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bWFuYWdlX3ZpZGVvc3xrZXl3b3JkOmhvc3RfdmlkZW9zIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZSIgdGl0bGU9IiIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2NyZWF0ZSI+CiBIb3N0IHZpZGVvcyA8L2E+CgogICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24iIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBpZD0idG9wbmF2X2NyZWF0ZSI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpjb21wYXJlX3BsYW5zIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS91cGdyYWRlIiB0aXRsZT0iVXBncmFkZSBvciBjb21wYXJlIG91ciBwbGFucyI+Q29tcGFyZSBwbGFuczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Omhvc3RfdmlkZW9zfGtleXdvcmQ6cHJvZmVzc2lvbmFscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vcHJvZmVzc2lvbmFscyIgdGl0bGU9IkdldCBwcm9mZXNzaW9uYWwgdmlkZW8gaG9zdGluZyB0b29scyI+UHJvZmVzc2lvbmFsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Omhvc3RfdmlkZW9zfGtleXdvcmQ6YnVzaW5lc3NlcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vYnVzaW5lc3MiIHRpdGxlPSJHZXQgcG93ZXJmdWwgdmlkZW8gbWFya2V0aW5nIHRvb2xzIj5CdXNpbmVzc2VzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDp2aWRlb19sb3ZlcnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5b25lIiB0aXRsZT0iVXBsb2FkIGFuZCBzaGFyZSB5b3VyIHZpZGVvcyI+VmlkZW8gbG92ZXJzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDp2aWRlb19zY2hvb2wiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV92aWRlb19zY2hvb2xfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3ZpZGVvc2Nob29sIiB0aXRsZT0iTGVhcm4gaG93IHRvIG1ha2UgYmV0dGVyIHZpZGVvcyI+VmlkZW8gU2Nob29sPC9hPgogPC9saT4KICAgPC91bD4KICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJ3YXRjaCI+CiA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6d2F0Y2giIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IiIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X3dhdGNoIj4KIFdhdGNoIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfd2F0Y2giPgogIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Y2F0ZWdvcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2F0ZWdvcmllc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vY2F0ZWdvcmllcyIgdGl0bGU9IkJyb3dzZSB2aWRlb3MgYnkgaW50ZXJlc3QsIGdlbnJlLCBhbmQgbW9yZSI+Q2F0ZWdvcmllczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Y2hhbm5lbHMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2NoYW5uZWxzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscyIgdGl0bGU9IlZpZXcgdmlkZW8gcGxheWxpc3RzIGNyZWF0ZWQgYW5kIGN1cmF0ZWQgYnkgb3RoZXIgbWVtYmVycyI+Q2hhbm5lbHM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOmdyb3VwcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfZ3JvdXBzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9ncm91cHMiIHRpdGxlPSJXYXRjaCBhbmQgZGlzY3VzcyB2aWRlb3Mgd2l0aCBvdGhlcnMiPkdyb3VwczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6YXBwIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9hcHBzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9ldmVyeXdoZXJlIiB0aXRsZT0iV2F0Y2ggVmltZW8gdmlkZW9zIG9uIFRWcywgcGhvbmVzLCB0YWJsZXRzLCBhbmQgbW9yZSI+QXBwczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6bW9yZSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfbW9yZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJEaXNjb3ZlciBtb3JlIHdheXMgdG8gd2F0Y2ggb24gVmltZW8iPk1vcmXigKY8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9Im9uZGVtYW5kIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pc19vbmRlbWFuZCB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOm9uX2RlbWFuZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iV2F0Y2ggbW92aWVzLCBzZXJpZXMsIGFuZCBtb3JlIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfb25kZW1hbmQiPgogT24gRGVtYW5kIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfb25kZW1hbmQiPgogIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOndoYXRzX25ldyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfd2hhdHNfbmV3X2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCIgdGl0bGU9IlNlZSBuZXcgYW5kIG5vdGV3b3J0aHkgdGl0bGVzIGFkZGVkIHRvIE9uIERlbWFuZCI+V2hhdOKAmXMgbmV3PC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6ZGlzY292ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX2Rpc2NvdmVyX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9kaXNjb3ZlciIgdGl0bGU9IkRpc2NvdmVyIHRpdGxlcyBvdXIgdGVhbSByZWNvbW1lbmRzIj5EaXNjb3ZlcjwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOmdlbnJlcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZ2VucmVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UiIHRpdGxlPSJCcm93c2UgdGl0bGVzIGJ5IGdlbnJlIj5HZW5yZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDp0dl9zZXJpZXMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX3R2X3Nlcmllc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvYnJvd3NlL3R2K3NlcmllcyIgdGl0bGU9IkJyb3dzZSBzZXJpZXMgYW5kIFRWIHNob3dzIj5UViArIFNlcmllczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnN0YXJ0X3NlbGxpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X29uZGVtYW5kX3NlbGxfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL3N0YXJ0c2VsbGluZyIgdGl0bGU9IlNlbGwgZGlyZWN0bHkgdG8geW91ciBmYW5zIHdpdGggVmltZW8gT24gRGVtYW5kIj5TdGFydCBzZWxsaW5nPC9hPgogPC9saT4KICAgPC91bD4KICA8L2xpPgogCiA8L3VsPgogPC9uYXY+PCEtLSAvLnRvcG5hdl9kZXNrdG9wX21lbnUgLS0+CiAKICAgPGRpdiBjbGFzcz0idG9wbmF2X21lbnVfcmlnaHQiPgoKICAgPGZvcm0gY2xhc3M9InRvcG5hdl9tZW51X3NlYXJjaCIgYWN0aW9uPSIvL3ZpbWVvLmNvbS9zZWFyY2giIG1ldGhvZD0iZ2V0IiByb2xlPSJzZWFyY2giIGRhdGEtZHMtcHJvdGVjdGlvbj4KIDxpbnB1dCBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXRvcG5hdl9tZW51X3NlYXJjaF9pbnB1dCBqcy1zZWFyY2hfYXV0b2NvbXBsZXRlIiAgdHlwZT0idGV4dCIgbmFtZT0icSIgdGl0bGU9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIHZhbHVlPSIiIGFyaWEtbGFiZWw9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIHBsYWNlaG9sZGVyPSJTZWFyY2ggdmlkZW9zLCBwZW9wbGUsIGFuZCBtb3JlIiBhdXRvY29tcGxldGU9Im9mZiI+PGJ1dHRvbiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoX3N1Ym1pdCB0b3BuYXZfaWNvbl9zZWFyY2hfYiIgdHlwZT0ic3VibWl0IiBhcmlhLWxhYmVsPSJTZWFyY2giPjwvYnV0dG9uPgogPC9mb3JtPgogCiAgCiAgCiAgIDxhIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF91cGxvYWQgdG9wbmF2X2ljb25fdXBsb2FkX2IiIGhyZWY9Ii91cGxvYWQiIHRpdGxlPSJVcGxvYWQgeW91ciB2aWRlb3MiIHJvbGU9ImJ1dHRvbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb21wb25lbnQ6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIj48c3Bhbj5VcGxvYWQ8L3NwYW4+PC9hPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfbWVudV9yaWdodCAtLT4KICA8L2Rpdj48IS0tIC8udG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciAtLT4KPC9kaXY+CgogPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgIiByb2xlPSJiYW5uZXIiPgoKIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICA8YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfbGVmdCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28gdG9wbmF2X2ljb25fbW9iaWxlX3Zsb2dvX2IiPgogIDwvYnV0dG9uPgogPGEgaHJlZj0iLy92aW1lby5jb20vc2VhcmNoIiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX3NlYXJjaCB0b3BuYXZfaWNvbl9tb2JpbGVfc2VhcmNoX2IiPiA8L2E+CiA8c3BhbiBjbGFzcz0idG9wbmF2X21vYmlsZV9oZWFkZXJfdGl0bGUiPjwvc3Bhbj4KIDwvZGl2PgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IGpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2Nsb3NlIHRvcG5hdl9pY29uX21vYmlsZV94X2IiPiA8L2J1dHRvbj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCBqcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyB0b3BuYXZfaWNvbl9tb2JpbGVfZ2Vhcl9iIj4gPC9idXR0b24+CiA8L2Rpdj4KCiA8dWw+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2NoYW5uZWxfYiAiIGhyZWY9Ii8vdmltZW8uY29tLyI+CiBTdGFmZiBQaWNrcyA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBkYXRhLWFjdGlvbj0ibGFzdF9wYWdlIiBkYXRhLWJyZWV6ZS1pZ25vcmUgY2xhc3M9InRvcG5hdl9pY29uX21vYmlsZV9hdmF0YXJfYiAiIGhyZWY9Ii9sb2dfaW4iPgogPHNwYW4gY2xhc3M9Im1lbnVfYXV0aCI+Sm9pbiBvciBsb2cgaW48L3NwYW4+IDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3N0YXJfYiIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogV2F0Y2ggPC9hPgogPC9saT4KICAgPGxpPgogPGEgb25jbGljaz0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl91cGxvYWQodGhpcyk7IHJldHVybiBmYWxzZTsiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3VwbG9hZF9iIiBocmVmPSIvL3ZpbWVvLmNvbS91cGxvYWQiPgogVXBsb2FkIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX3ZvZF9iICIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiPgogT24gRGVtYW5kIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2ZvcmdvdF9iICIgaHJlZj0iaHR0cHM6Ly9oZWxwLnZpbWVvLmNvbS9oYy9lbi11cyI+CiBIZWxwIDwvYT4KIDwvbGk+CiAgPC91bD4KIDwvc2VjdGlvbj4KCiAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX2Fycm93bGVmdF9iIj4gPC9idXR0b24+CiA8c3BhbiBjbGFzcz0idG9wbmF2X21vYmlsZV9oZWFkZXJfdGl0bGUiPk1vcmUgc3R1ZmY8L3NwYW4+CiA8L2Rpdj4KCiA8dWw+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vdGVybXMiPgogVGVybXMgb2YgU2VydmljZSA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vcHJpdmFjeSI+CiBQcml2YWN5IFBvbGljeSA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZG1jYSI+CiBDb3B5cmlnaHQgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2Nvb2tpZV9wb2xpY3kiPgogQ29va2llcyA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJkZXNrdG9wIiBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3MyZHMoKTsgcmV0dXJuIGZhbHNlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiPgogRGVza3RvcCBzaXRlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgbGFuZ3VhZ2UgaHJlZj0iIyI+CiBMYW5ndWFnZSA8L2E+CiAgIDxzZWxlY3Qgb25jaGFuZ2U9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJsKHRoaXMpIiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzX2xhbmd1YWdlIj4KICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkIHZhbHVlPSJlbiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBFbmdsaXNoIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVzIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVzcGHDsW9sIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImRlLURFIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIERldXRzY2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZnItRlIiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRnJhbsOnYWlzIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImphLUpQIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIOaXpeacrOiqniA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwdC1CUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBQb3J0dWd1w6pzIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImtvLUtSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIO2VnOq1reyWtCA8L29wdGlvbj4KICA8L3NlbGVjdD4KICA8L2xpPgogIDxsaT4KICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiBGQVEgPC9hPgogICA8L2xpPgogIDwvdWw+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51X2NvcHlyaWdodCI+VE0gKyDCqSAyMDE3IFZpbWVvLCBJbmMuPC9kaXY+CiA8L3NlY3Rpb24+CjwvbmF2PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKGEsYil7YS52aW1lbz1hLnZpbWVvfHx7fSx2aW1lby5tb2JpbGU9dmltZW8ubW9iaWxlfHx7fSxWaW1lbz12aW1lby5tb2JpbGV8fHt9LFZpbWVvLmRlc2t0b3Bfc2hhcmVkPVZpbWVvLmRlc2t0b3Bfc2hhcmVkfHx7fTt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKCJ0b3BuYXZfZGVza3RvcCIpLGQ9Im9udG91Y2hzdGFydCJpbiBhPyJ0b3VjaHN0YXJ0IjphLlBvaW50ZXJFdmVudD8icG9pbnRlcmRvd24iOmEuTVNQb2ludGVyRXZlbnQ/Ik1TUG9pbnRlckRvd24iOiJjbGljayI7ImNsaWNrIiE9PWQmJmMuYWRkRXZlbnRMaXN0ZW5lcihkLGZ1bmN0aW9uKGEpe3ZhciBiPSJpbWciPT09YS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQ7Yi5jbGFzc0xpc3QuY29udGFpbnMoInRvcG5hdl9oYXNfZHJvcGRvd24iKSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKX0sITEpLGMuYWRkRXZlbnRMaXN0ZW5lcihkLGZ1bmN0aW9uKGMpe2MudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygianMtdG9wbmF2X21lbnVfYXV0aCIpJiYoYi5jb29raWU9Imxhc3RfcGFnZT0iK2VuY29kZVVSSUNvbXBvbmVudChhLmxvY2F0aW9uLnBhdGhuYW1lKSsiO3BhdGg9Jy8nO21heC1hZ2U9MTgwMDsiKX0sITEpLFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl91cGxvYWQ9ZnVuY3Rpb24oYyl7aWYoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpe3ZhciBmLGcsZD0idmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViIixlPSIvdXBsb2FkIjtyZXR1cm4gZj1mdW5jdGlvbigpe2Iud2Via2l0SGlkZGVufHwoYS5sb2NhdGlvbj1lKX0sZz1mdW5jdGlvbigpe2EubG9jYXRpb249ZCxzZXRUaW1lb3V0KGYsMjUpfSxnKCksITF9YS5sb2NhdGlvbj1jLmhyZWZ9LFZpbWVvLmRlc2t0b3Bfc2hhcmVkLl9zMmRzPWZ1bmN0aW9uKCl7Yi5jb29raWU9Im9wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49Iit2aW1lby5kb21haW4sYS5sb2NhdGlvbi5yZWxvYWQoKX0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybD1mdW5jdGlvbihiKXt2YXIgYz1iLnZhbHVlLGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub3BlbigiUE9TVCIsIi9zZXR0aW5ncy9sb2NhbGUiKSxkLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpLGQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksZC5zZW5kKCJsb2NhbGU9IitjKyImdG9rZW49Iit2aW1lby54c3JmdCksZC5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PT1kLnN0YXR1cyYmYS5sb2NhdGlvbi5yZWxvYWQoKX19O3ZhciBlPSJjbGljayIsZj0iYmxvY2siLGc9Im5vbmUiLGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyIpO2gmJmguYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9tYWluIik7Yy5zdHlsZS5kaXNwbGF5PWY7dmFyIGQ9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxjLnN0eWxlLmRpc3BsYXk9Z30pO3ZhciBoPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyIpLGk9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiKTtpLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZixjLnN0eWxlLmRpc3BsYXk9Zzt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5zX2Nsb3NlIik7ZC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCksaC5zdHlsZS5kaXNwbGF5PWcsYy5zdHlsZS5kaXNwbGF5PWZ9KX0pfSwhMSksc2V0VGltZW91dChmdW5jdGlvbigpe2Z1bmN0aW9uIGYoYSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbigiUE9TVCIsIi9zZXR0aW5ncy9uYXYiKSxiLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpLGIuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksYi5zZW5kKCJtZXNzYWdlX3N0YXRlPSIrYSsiJnRva2VuPSIrdmltZW8ueHNyZnQpLGIub25sb2FkPWZ1bmN0aW9uKCl7fX12YXIgYT1iLmdldEVsZW1lbnRCeUlkKCJ0b3BuYXZfbWVudV9hdmF0YXIiKTtpZihhKXt2YXIgYz1hLnF1ZXJ5U2VsZWN0b3IoIi50b3BuYXZfbWVudV9hdmF0YXJfYnViYmxlIiksZT0oYS5xdWVyeVNlbGVjdG9yKCIjdG9wbmF2X3VzZXJfZHJvcGRvd24iKSwhMSk7YyYmYy5jbGFzc0xpc3QuYWRkKCJvbiIpLGEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixmdW5jdGlvbigpe2V8fChlPSEwLGMmJmMuY2xhc3NMaXN0LnJlbW92ZSgib24iKSxmKDEpKX0sITEpfX0sMWUzKX0od2luZG93LGRvY3VtZW50KTsKPC9zY3JpcHQ+CgogPGRpdiBjbGFzcz0id3JhcF9jb250ZW50Ij4KIAo8ZGl2IGNsYXNzPSJhcHBfYmFubmVyX2NvbnRhaW5lciI+CgogPGRpdiBjbGFzcz0iYXBwX2Jhbm5lciBoaWRlIGpzLWFwcF9iYW5uZXIiPgoKIDxidXR0b24gY2xhc3M9ImFwcF9iYW5uZXJfY2xvc2UganMtYXBwX2Jhbm5lcl9jbG9zZSI+JnRpbWVzOzwvYnV0dG9uPgoKIDxkaXYgY2xhc3M9ImFwcF9iYW5uZXJfaWNvbl93cmFwcGVyIj4KIDxzdmcgY2xhc3M9ImFwcF9iYW5uZXJfaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yNCA2LjY0M0MyNCAxMS4yODYgMTUgMjIgMTAuODc1IDIyIDYgMjIgNiA3LjcxNCAzLjAxMyA3LjcxNGMtLjM4OCAwLTEuODgzIDEuMDctMS44ODMgMS4wN0wwIDcuMzU4czUuMjUtNSA3LjUtNWM0LjUgMCAzIDEyLjUgNS42MjUgMTIuNSAxLjUgMCA2Ljc1LTcuODU3IDIuMjUtNy44NTctLjc1IDAtMS41LjM1Ny0xLjUuMzU3QzE1IDMuNzg3IDE3LjI1IDIgMjAuNjI1IDIgMjIuODc1IDIgMjQgMy43ODYgMjQgNi42NDN6Ii8+PC9zdmc+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJhcHBfYmFubmVyX2N0YSI+CiBXYXRjaCBpbiBvdXIgYXBwIDwvZGl2PgoKIDxhIGNsYXNzPSJhcHBfYmFubmVyX2J1dHRvbiBqcy1hcHBfYmFubmVyX29wZW5fYXBwIiBkYXRhLWRlZXAtbGluaz0idmlkZW9zLzE5Mzk3MDAxNCIgZGF0YS1zb3VyY2UtY29udGV4dD0iY2xpcCI+CiA8c3BhbiBjbGFzcz0iYXBwX2Jhbm5lcl9idXR0b25fdGV4dCI+T3BlbiBpbiBhcHA8L3NwYW4+CiA8L2E+CgogPC9kaXY+Cgo8L2Rpdj4KCgogIDxzY3JpcHQ+CiAgIWZ1bmN0aW9uKGkpe2lmKHZvaWQgMD09PWkudmltZW98fHZvaWQgMD09PWkudmltZW8uY2xpcHMpe2kudmltZW89aS52aW1lb3x8e30saS52aW1lby5jbGlwcz1pLnZpbWVvLmNsaXBzfHx7fTt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5vcGVuKCJHRVQiLCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vMTkzOTcwMDE0L2NvbmZpZz9ieWxpbmU9MCZjb2xsZWN0aW9ucz0wJmNvbnRleHQ9VmltZW8lNUNDb250cm9sbGVyJTVDQ2xpcENvbnRyb2xsZXIubWFpbiZkZWZhdWx0X3RvX2hkPTEmb3V0cm89bm90aGluZyZwb3J0cmFpdD0wJnNoYXJlPTEmdGl0bGU9MCZ3YXRjaF90cmFpbGVyPTAmcz1iZTAwMTE4NGVmMWY4YzlkNDRjMDg5MTYwYzA4ZThkN2QwYWMwZWIzXzE0OTA3NDcwMjQiLCEwKSxlLm9ubG9hZD1mdW5jdGlvbigpe2kudmltZW8uY2xpcHNbIjE5Mzk3MDAxNCJdPUpTT04ucGFyc2UoZS5yZXNwb25zZVRleHQpfSxlLndpdGhDcmVkZW50aWFscz0hMCxlLnNlbmQoKX19KHdpbmRvdyk7CiA8L3NjcmlwdD4KCjwhLS1baWYgbHRlIElFIDldPgogPHNjcmlwdD53aW5kb3cubG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24gKyAnP2xpdGU9MSc7PC9zY3JpcHQ+CjwhW2VuZGlmXS0tPgoKPG1haW4gaWQ9Im1haW4iIGNsYXNzPSJpc19sb2FkaW5nIj4KIDxkaXYgY2xhc3M9ImlyaXNfZ3JpZCBpcmlzX2dyaWRfZnA5NjAiPgogPGRpdiBjbGFzcz0iY2xpcF9tYWluIj4KIDxkaXYgY2xhc3M9InBsYXllcl9hcmVhIj4KIDxub3NjcmlwdD4KIDxpbWcgc3JjPSJodHRwczovL2kudmltZW9jZG4uY29tL3ZpZGVvLzYwNzI0MTk5NC5qcGc/bXc9MTkyMCZhbXA7bWg9MTA4MCZhbXA7cT03MCIgYWx0PSIiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwIGF1dG87IG1heC1oZWlnaHQ6IDU0MHB4OyIgLz4KIDwvbm9zY3JpcHQ+CiA8L2Rpdj4KCiA8bm9zY3JpcHQ+CiA8ZGl2IGNsYXNzPSJjbGlwX21haW4tY29udGVudCBpcmlzX2dyaWQtd3JhcHBlci0tY29udGVudCI+CiA8ZGl2IGNsYXNzPSJpcmlzX2dyaWQtY29udGVudCI+CiA8ZGl2IGNsYXNzPSJyb3cgdS1jb2xsYXBzZSBjbGlwLW5vdGlmaWNhdGlvbiIgc3R5bGU9Im1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMS41ZW07Ij4KIDxkaXYgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLWNsaXAgaXJpc19ub3RpZmljYXRpb24tY2xpcC0tY2F1dGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tbm8tY2xvc2UgY2xlYXJmaXgiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwOyI+CiA8cD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgdG8gZXhwZXJpZW5jZSBWaW1lbyBpbiBhbGwgb2YgaXRzIGdsb3J5LjwvcD4KIDwvZGl2PgogPC9kaXY+CgogPGRpdiBjbGFzcz0iaXJpc19ncmlkLWNvbnRlbnQiPgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvLXdyYXBwZXIiPgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvIj4KIDxoMSBjbGFzcz0iY2xpcF9pbmZvLWhlYWRlciI+UHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzPC9oMT4KIDwvZGl2PgogPGRpdiBjbGFzcz0iY2xpcF9pbmZvLXN1YmxpbmUtLXdhdGNoIGNsaXBfaW5mby1zdWJsaW5lLS1pbmxpbmUiPgogPHAgY2xhc3M9InVzZXJieWxpbmUtc3VibGluZSB1c2VyYnlsaW5lLXN1YmxpbmUtLWxnIj4KIDxzcGFuPmZyb208L3NwYW4+CiA8c3BhbiBjbGFzcz0idXNlcmxpbmsgdXNlcmxpbmstLW1kIj4KIDxhIGhyZWY9Ii95YW5kdWIiPllhbiBEdWJyYXZza2k8L2E+CiA8c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrIj4KICA8L3NwYW4+CiA8L3NwYW4+CiA8L3A+CiA8c3BhbiBjbGFzcz0iY2xpcF9pbmZvLXRpbWUiPjx0aW1lIGRhdGV0aW1lPSIyMDE2LTEyLTAxVDE5OjA4OjE2LTA1OjAwIiB0aXRsZT0iVGh1cnNkYXksIERlY2VtYmVyIDEsIDIwMTYgYXQgNzowOCBQTSI+NCBtb250aHMgYWdvPC90aW1lPjwvc3Bhbj4KIDwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgoKIDxkaXYgY2xhc3M9ImNsaXBfZGV0YWlscyBpcmlzX2RpdmlkZXItLWRhcmsgaXJpc19kaXZpZGVyLXRvcCBpcmlzX2RpdmlkZXItdG9wLS1tIGlyaXNfZGl2aWRlci1ib3QgaXJpc19kaXZpZGVyLWJvdC0tbSB1LWNvbGxhcHNlIGNsZWFyZml4Ij4KIDxkaXYgY2xhc3M9ImlyaXNfZ3JpZC1jb250ZW50Ij4KIDxkaXYgY2xhc3M9ImNsaXBfZGV0YWlscy1kZXNjcmlwdGlvbiBkZXNjcmlwdGlvbi13cmFwcGVyIGlyaXNfZGVzYyI+CiA8cCBjbGFzcz0iZmlyc3QiPndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwczwvcD4gPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CiA8L25vc2NyaXB0PgogPC9kaXY+CiA8L2Rpdj4KPC9tYWluPgoKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKIHdpbmRvdy52aW1lby5jbGlwX3BhZ2VfY29uZmlnID0geyJjbGlwIjp7ImlkIjoxOTM5NzAwMTQsInRpdGxlIjoiUHVzaCB1cHMgd2l0aCBEZWFkIEtlbm5lZHlzIiwiZGVzY3JpcHRpb24iOiI8cCBjbGFzcz1cImZpcnN0XCI+d3Jlc3QtanVtcHMgLCBmaXN0LWp1bXBzIGFuZCBmaW5nZXJzIHB1c2ggdXBzPFwvcD4iLCJ1cGxvYWRlZF9vbiI6IjIwMTYtMTItMDEgMTk6MDg6MTYiLCJ1cGxvYWRlZF9vbl9yZWxhdGl2ZSI6IjQgbW9udGhzIGFnbyIsInVwbG9hZGVkX29uX2Z1bGwiOiJUaHVyc2RheSwgRGVjZW1iZXIgMSwgMjAxNiBhdCA3OjA4IFBNIEVTVCIsImlzX3NwYXRpYWwiOmZhbHNlLCJwcml2YWN5Ijp7ImlzX3B1YmxpYyI6dHJ1ZSwidHlwZSI6ImFueWJvZHkiLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyJ9LCJkdXJhdGlvbiI6eyJyYXciOjI1LCJmb3JtYXR0ZWQiOiIwMDoyNSJ9LCJpc19saWtlZCI6ZmFsc2UsImlzX3VuYXZhaWxhYmxlIjpmYWxzZX0sIm93bmVyIjp7ImlkIjo1ODIwMDk2MywiZGlzcGxheV9uYW1lIjoiWWFuIER1YnJhdnNraSIsImFjY291bnRfdHlwZSI6IiIsImJhZGdlIjpudWxsLCJwb3J0cmFpdCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjkyODM4MF83NXg3NSIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2OTI4MzgwXzE1MHgxNTAifSwidXJsIjoiXC95YW5kdWIiLCJ2ZXJpZmllZCI6dHJ1ZSwiaXNfZm9sbG93aW5nIjpmYWxzZX0sIm9uZGVtYW5kIjpudWxsLCJicmFuZF9jaGFubmVsIjpudWxsLCJjdXJfdXNlciI6bnVsbCwic3RhdHVzIjp7InN0YXRlIjoicmVhZHkifSwiY29weXJpZ2h0X3N0YXR1cyI6eyJpc19ibG9ja2VkIjpmYWxzZX0sImNvbnRlbnRfYmxvY2tfc3RhdHVzIjp7ImlzX2Jsb2NrZWQiOmZhbHNlLCJtZXNzYWdlIjpudWxsLCJjb250aW51b3VzX3BsYXlfZW5hYmxlZCI6ZmFsc2V9LCJwbGF5ZXIiOnsiY29uZmlnX3VybCI6Imh0dHBzOlwvXC9wbGF5ZXIudmltZW8uY29tXC92aWRlb1wvMTkzOTcwMDE0XC9jb25maWc/YnlsaW5lPTAmY29sbGVjdGlvbnM9MCZjb250ZXh0PVZpbWVvJTVDQ29udHJvbGxlciU1Q0NsaXBDb250cm9sbGVyLm1haW4mZGVmYXVsdF90b19oZD0xJm91dHJvPW5vdGhpbmcmcG9ydHJhaXQ9MCZzaGFyZT0xJnRpdGxlPTAmd2F0Y2hfdHJhaWxlcj0wJnM9YmUwMDExODRlZjFmOGM5ZDQ0YzA4OTE2MGMwOGU4ZDdkMGFjMGViM18xNDkwNzQ3MDI0IiwicGxheWVyX3VybCI6InBsYXllci52aW1lby5jb20iLCJkaW1lbnNpb25zIjp7ImhlaWdodCI6NTQwLCJ3aWR0aCI6NTQwfSwicG9zdGVyIjp7InVybCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYwNzI0MTk5NC5qcGc/bXc9MjAwMCZtaD0xMDgwJnE9NzAifX0sInNoYXJlX2VuYWJsZWQiOnRydWUsImNvbnRpbnVvdXNfcGxheV9lbmFibGVkIjp0cnVlLCJzZW5kX3RvX3dpcHN0ZXJfZW5hYmxlZCI6ZmFsc2UsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MDcyNDE5OTRfMTkweDEwNy5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MDcyNDE5OTRfMzgweDIxNC5qcGciLCJ3aWR0aCI6MTkwLCJoZWlnaHQiOjEwNywiaWQiOjYwNzI0MTk5NH0sImFkcyI6eyJhZmNfdGV4dF9hZCI6eyJwdWJfaWQiOiJjYS1wdWItMjQ1OTI0MjE5OTA0ODcwMCJ9LCJkaXNwbGF5X2FkIjp7Im5ldHdvcmtfaWQiOiI1NDU0OTU0NCIsInVuaXRfbmFtZSI6ImNsaXBcL3Nwb3J0cyIsInNpemVzIjpbMzAwLDI1MF0sImN1c3RvbV90YXJnZXRpbmciOnsiY29udGVudF9yYXRpbmciOnt9fX19LCJjb250ZW50X3JhdGluZyI6bnVsbCwibm90aWZpY2F0aW9ucyI6W10sImNhdGVnb3JpZXNfY29uZmlnIjp7ImNhdGVnb3JpZXMiOlt7Im5hbWUiOiJNYXJ0aWFsIEFydHMiLCJ1cmwiOiJcL2NhdGVnb3JpZXNcL2luc3RydWN0aW9uYWxzXC9tYXJ0aWFsYXJ0c1wvdmlkZW9zIn0seyJuYW1lIjoiU3BvcnRzIiwidXJsIjoiXC9jYXRlZ29yaWVzXC9zcG9ydHMifSx7Im5hbWUiOiJJbnN0cnVjdGlvbmFscyIsInVybCI6IlwvY2F0ZWdvcmllc1wvaW5zdHJ1Y3Rpb25hbHMifV0sInRvdGFsX2NhdGVnb3JpZXMiOjN9LCJtdXNpY190cmFjayI6bnVsbCwiY2NfbGljZW5zZSI6bnVsbCwiY3JlZGl0cyI6eyJ0b3RhbF9jcmVkaXRzIjp7InJhdyI6MCwiZm9ybWF0dGVkIjowfX0sInN0cmVhbSI6eyJpZCI6bnVsbCwicG9zIjowfSwiY29sbGVjdGlvbl9hZGRlciI6eyJlbmFibGVkIjpmYWxzZX0sImNsaXBfc3RhdHMiOnsiZW5hYmxlZCI6ZmFsc2V9LCJkb3dubG9hZF9jb25maWciOm51bGwsInN1cnZleV91cmwiOiJodHRwczpcL1wvd3d3Lm1hcmtldGluZ3Jlc2VhcmNocmVzb3VyY2VzLmNvbVwvaW1hZ2VzXC9vdm0wMDUxNlwvbXJyLmFzcD9JLlVzZXIxPU8mdXNlcj1sb2dnZWRvdXQmY2xpcD0xOTM5NzAwMTQmdnVpZD0ifTsKIHdpbmRvdy5jYW5fcHJlbG9hZCA9IHRydWU7CgogPC9zY3JpcHQ+CgogPGRpdiBjbGFzcz0iaGlkZSI+CiA8ZGl2IGlkPSJnb29nbGVfYWZjX2FkcyIgY2xhc3M9Imdvb2dsZV9hZCI+PC9kaXY+CgogPC9kaXY+Cgo8c2NyaXB0Pgpjb25zb2xlLmxvZygnJWMgXG5cCuKOnCAgICAgICBAQEAmICAgICAgIEBAQEBAQFxuXArijpwgICAgI0BAQEBAQEAgICAgJkBAQEBAQEBAICAgICAgIEJ1aWx0IHVzaW5nOlxuXArijpwgICNAQEBAQEBAQEAuICAlJSZAQEBAQEBAICAgICAgICDigKIgUmVhY3QgKyBGbHV4XG5cCuKOnCAgICAgICZAQEBAQCUgICAgIChAQEBAQCggICAgICAg4oCiIEVTNlxuXArijpwgICAgICAgQEBAQEBAICAgICBAQEBAQEAgICAgICAgIOKAoiBGZXRjaCBBUElcblwK4o6cICAgICAgICVAQEBAQCggIC5AQEBAQCggICAgICAgICDigKIgRmxleGJveFxuXArijpwgICAgICAgIEBAQEBAQChAQEBAQEBcblwK4o6cICAgICAgICAvQEBAQEBAQEBAQCUgICAgICAgICAgICBMaWtlIHBsYXlpbmcgd2l0aCBuZXcgdGVjaG5vbG9neSwgdG9vP1xuXArijpwgICAgICAgICAmQEBAQEBAQCUgICAgICAgICAgICAgIGh0dHBzOi8vdmltZW8uY29tL2pvYnNcblwK4o6cICAgICAgICAgIEBAQEBAI1xuXApcblwKJywgJ2NvbG9yOiAjMDBhZGVmOycpOwo8L3NjcmlwdD4KIDwvZGl2PgoKICAKPGZvb3RlciBjbGFzcz0iZm9vdGVyX3YyIGZvb3Rlcl92Mi0tcmVzcG9uc2l2ZSI+CiAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19zaXRlbWFwIj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGlua3MiPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VmltZW88L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2Fib3V0IiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfYWJvdXRfY2xpY2siPgogQWJvdXQgVmltZW8gPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2Jsb2ciIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIj4KIFZpbWVvIEJsb2cgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZ3VpZGVsaW5lcyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2d1aWRlbGluZXNfY2xpY2siPgogVmltZW8gR3VpZGVsaW5lcyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSJodHRwczovL2RldmVsb3Blci52aW1lby5jb20iIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19kZXZlbG9wZXJzX2NsaWNrIj4KIERldmVsb3BlcnMgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2pvYnMiPgogSm9icyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPkhlbHA8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayI+CiBIZWxwIENlbnRlciA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdmlkZW9zY2hvb2wiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aWRlb19zY2hvb2xfY2xpY2siPgogVmlkZW8gU2Nob29sIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9oZWxwL2ZhcSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2ZhcV9jbGljayI+CiBGQVEgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2ZvcnVtcyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2ZvcnVtc19jbGljayI+CiBGb3J1bXMgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5Nb3JlPC9zcGFuPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KIDwvZGl2PgogPC9oND4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9vbmRlbWFuZCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX29uX2RlbWFuZF9jbGljayI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2V2ZXJ5d2hlcmUiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ldmVyeXdoZXJlX2NsaWNrIj4KIEV2ZXJ5d2hlcmUgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3VwbG9hZCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwbG9hZF9jbGljayI+CiBVcGxvYWQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3NpdGVfbWFwIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfc2l0ZV9tYXBfY2xpY2siPgogU2l0ZSBNYXAgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5VcGdyYWRlPC9zcGFuPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KIDwvZGl2PgogPC9oND4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii9wbHVzP3Y9Zm9vdGVyIj4KIFZpbWVvIFBsdXMgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3Bybz92PWZvb3RlciI+CiBWaW1lbyBQUk8gPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2J1c2luZXNzIj4KIFZpbWVvIEJ1c2luZXNzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgogPC9kaXY+CgogICA8YXNpZGUgaWQ9ImZvb3Rlcl90aXAiIGNsYXNzPSJmb290ZXJfdjJfX3RpcCIgYXJpYS1saXZlPSJwb2xpdGUiPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogPHAgY2xhc3M9ImFjdGl2ZSBmb290ZXJfdjJfX3RpcC1jb250ZW50Ij5BbmltYXRlIGFsbCB0aGUgdGhpbmdzIHdpdGggdGhlIGhhbmR5IDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL3ZpZGVvc2Nob29sL2xlc3Nvbi80MzQvbWNsYXJlbnMtd29ya3Nob3AtYXBwIj5NY0xhcmVuIFdvcmtzaG9wIGFwcDwvYT4sIG5hbWVkIGFmdGVyIHRoZSBmaWxtbWFraW5nIG1hc3RlciBoaW1zZWxmLjwvcD4KIDwvYXNpZGU+CiA8L3NlY3Rpb24+CiAKICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogPHA+VE0gKyAmY29weTsgMjAxNyBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KIDwvZGl2PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvdGVybXMiIHRpdGxlPSJUZXJtcyAmYW1wOyBDb25kaXRpb25zIj4KIFRlcm1zIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogUHJpdmFjeSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvZG1jYSIgdGl0bGU9IkNvcHlyaWdodCBJbmZvcm1hdGlvbiI+CiBDb3B5cmlnaHQgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2Nvb2tpZV9wb2xpY3kiIHRpdGxlPSJMZWFybiBtb3JlIGFib3V0IGhvdyBWaW1lbyB1c2VzIGNvb2tpZXMiPgogQ29va2llcyA8L2E+CiA8L2xpPgogPC91bD4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiBNYWRlIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly92aW1lby5jb20vbG92ZSI+PHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPjwvYT4gaW4gTllDLiA8L2Rpdj4KIDwvZGl2PgoKIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxzcGFuIGNsYXNzPSJsYW5ndWFnZSI+CiBMYW5ndWFnZToKIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9IiNsYW5ndWFnZSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2xvY2FsZScsIHNpemU6ICdzbWFsbCd9KTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNob29zZSBhIGRpZmZlcmVudCBsYW5ndWFnZSI+RW5nbGlzaDwvYT4KIDwvc3Bhbj4KCiAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgPC9kaXY+Cgo8L3NlY3Rpb24+CjwvZm9vdGVyPgogCiA8L2Rpdj4KCiAKIAogCiAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KIFt7InVybCI6Imh0dHBzOi8vdmltZW8uY29tLzE5Mzk3MDAxNCIsInRodW1ibmFpbFVybCI6Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmlsdGVyL292ZXJsYXk/c3JjMD1odHRwcyUzQSUyRiUyRmkudmltZW9jZG4uY29tJTJGdmlkZW8lMkY2MDcyNDE5OTRfMTI4MHgxMjgwLmpwZyZzcmMxPWh0dHBzJTNBJTJGJTJGZi52aW1lb2Nkbi5jb20lMkZpbWFnZXNfdjYlMkZzaGFyZSUyRnBsYXlfaWNvbl9vdmVybGF5LnBuZyIsImVtYmVkVXJsIjoiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzE5Mzk3MDAxNCIsIm5hbWUiOiJQdXNoIHVwcyB3aXRoIERlYWQgS2VubmVkeXMiLCJkZXNjcmlwdGlvbiI6IndyZXN0LWp1bXBzICwgZmlzdC1qdW1wcyBhbmQgZmluZ2VycyBwdXNoIHVwcyIsImhlaWdodCI6NzIwLCJ3aWR0aCI6NzIwLCJwbGF5ZXJUeXBlIjoiSFRNTDUgRmxhc2giLCJ2aWRlb1F1YWxpdHkiOiJIRCIsImR1cmF0aW9uIjoiUFQwMEgwME0yNVMiLCJ1cGxvYWREYXRlIjoiMjAxNi0xMi0wMVQxOTowODoxNi0wNTowMCIsInRodW1ibmFpbCI6eyJAdHlwZSI6IkltYWdlT2JqZWN0IiwidXJsIjoiaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9maWx0ZXIvb3ZlcmxheT9zcmMwPWh0dHBzJTNBJTJGJTJGaS52aW1lb2Nkbi5jb20lMkZ2aWRlbyUyRjYwNzI0MTk5NF8xMjgweDEyODAuanBnJnNyYzE9aHR0cHMlM0ElMkYlMkZmLnZpbWVvY2RuLmNvbSUyRmltYWdlc192NiUyRnNoYXJlJTJGcGxheV9pY29uX292ZXJsYXkucG5nIiwid2lkdGgiOjEyODAsImhlaWdodCI6MTI4MH0sImF1dGhvciI6eyJAdHlwZSI6IlBlcnNvbiIsIm5hbWUiOiJZYW4gRHVicmF2c2tpIiwidXJsIjoiaHR0cHM6Ly92aW1lby5jb20veWFuZHViIn0sInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlZpZXdBY3Rpb24iLCJ0YXJnZXQiOiJ2aW1lbzovL2FwcC52aW1lby5jb20vdmlkZW9zLzE5Mzk3MDAxNCJ9LCJpbnRlcmFjdGlvbkNvdW50Ijo0Nywia2V5d29yZHMiOiJbZGVhZGtlbm5lZHlzLHB1c2h1cHMsbWFydGlhbGFydHMsa3VuZ2Z1LHRyYWluaW5nXSIsIkB0eXBlIjoiVmlkZW9PYmplY3QiLCJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIn0seyJpdGVtTGlzdEVsZW1lbnQiOlt7IkB0eXBlIjoiTGlzdEl0ZW0iLCJwb3NpdGlvbiI6MSwiaXRlbSI6eyJAaWQiOiJodHRwczovL3ZpbWVvLmNvbS95YW5kdWIiLCJuYW1lIjoiWWFuIER1YnJhdnNraSJ9fSx7IkB0eXBlIjoiTGlzdEl0ZW0iLCJwb3NpdGlvbiI6MiwiaXRlbSI6eyJAaWQiOiJodHRwczovL3ZpbWVvLmNvbS95YW5kdWIvdmlkZW9zIiwibmFtZSI6IlZpZGVvcyJ9fV0sIkB0eXBlIjoiQnJlYWRjcnVtYkxpc3QiLCJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnIn1dIDwvc2NyaXB0PgoKPHNjcmlwdD4KIHZhciBfX2ZhID0gX19mYSB8fCBbXTsKIF9fZmEucHVzaChbJ3RyYWNrUGFnZXZpZXcnXSk7CgogIC8vIEFuYWx5dGljcyBTZXR1cAogdmFyIF9ndG0gPSBfZ3RtIHx8IFtdLAogX2luaXRpYWxfZ3RtX3N0YXRlID0geyJjbGlwX2lkIjoxOTM5NzAwMTQsImNyZWF0b3JfaWQiOjU4MjAwOTYzLCJjYXRlZ29yeSI6Ik1hcnRpYWwgQXJ0cywgU3BvcnRzLCBJbnN0cnVjdGlvbmFscyIsInByaXZhY3kiOiJhbnlib2R5Iiwic3RhZmZfcGljayI6Im5vIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9OwoKIF9pbml0aWFsX2d0bV9zdGF0ZVsndnVpZCddID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZ3RtLnN0YXJ0J10gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZXZlbnQnXSA9ICdndG0uanMnOwogX2d0bS5wdXNoKF9pbml0aWFsX2d0bV9zdGF0ZSk7CiAKIC8qKgogKiBJZiB0aGUgY3VycmVudCByZXF1ZXN0IHdhcyBidWNrZXRlZCBpbiBhbiBBQkxpbmNvbG4gZXhwZXJpbWVudCwKICogc2VuZCB0aGUgc2VsZWN0ZWQgdHJlYXRtZW50IGJhY2sgZnJvbSB0aGUgY2xpZW50LCB0byBmaWx0ZXIgYWIgdGVzdAogKiBkYXRhIGRvd24gdG8gbm9uLXJvYm90IHVzZXJzIHRoYXQgcnVuIEphdmFTY3JpcHQuCiAqLwogaWYgKCJBQkxpbmNvbG4iIGluIHdpbmRvdykgewogKGZ1bmN0aW9uICgpIHsKICAgfSkoKTsKIH0KCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogIEJVSUxEX0hBU0ggPSAnNzI0NTQnOwoKICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsibG9jYWxlIjoiZW4ifSk7CgogIHZhciBsb2NhbGVDb25maWcgPSB7CiBsYW5nOiAnZW4nLAogJ0RhdGUnOiB7CiBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiBzaG9ydERhdGU6ICclZC8lbS8lWScsCiBzaG9ydFRpbWU6ICclSTolTSVwJywKIEFNOiAnQU0nLAogUE06ICdQTScsCiBmaXJzdERheU9mV2VlazogMCwKCiAvLyBEYXRlLkV4dHJhcwogb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiByZXR1cm4gZGF5T2ZNb250aDsKIH0KIH0sCiAnRGF0ZVBpY2tlcic6IHsKIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogY2FuY2VsOiAiQ2FuY2VsIiwKIHdlZWs6ICJXayIgfSwKICAnTnVtYmVyJzogewogZGVjaW1hbDogJy4nLAogZ3JvdXA6ICcsJywKIGN1cnJlbmN5OiB7CiBwcmVmaXg6ICckJwogfQogfSwKICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9IH07CgogdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAKICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIiwiMSBUcmFjayI6IjEgVHJhY2siLCJBYm91dCI6IkFib3V0IiwiQWNjZXB0IjoiQWNjZXB0IiwiQWRkIGEgbmV3IGNvbW1lbnQiOiJBZGQgYSBuZXcgY29tbWVudCIsIkFkZCBjb21tZW50IjoiQWRkIGNvbW1lbnQiLCJBZGQgcmVwbHkiOiJBZGQgcmVwbHkiLCJBZGQgdG8gY29sbGVjdGlvbnMiOiJBZGQgdG8gY29sbGVjdGlvbnMiLCJBZGQiOiJBZGQiLCJBbGJ1bXMiOiJBbGJ1bXMiLCJBcHByb3hpbWF0ZSBUaW1lIFJlbWFpbmluZyI6IkFwcHJveGltYXRlIFRpbWUgUmVtYWluaW5nIiwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IGRlbGV0ZSB0aGlzIGNvbW1lbnQgcGVybWFuZW50bHk/IjoiQXJlIHlvdSBzdXJlIHlvdSB3YW50IGRlbGV0ZSB0aGlzIGNvbW1lbnQgcGVybWFuZW50bHk/IiwiQXV0b3BsYXkgbmV4dCB2aWRlbyI6IkF1dG9wbGF5IG5leHQgdmlkZW8iLCJCdXkge0RJU1BMQVlfUFJJQ0V9IjoiQnV5IHtESVNQTEFZX1BSSUNFfSIsImJ5IHtBUlRJU1RfTkFNRX0iOiJieSB7QVJUSVNUX05BTUV9IiwiQ2FuY2VsIjoiQ2FuY2VsIiwiQ2hhbmdlIHNldHRpbmdzLiI6IkNoYW5nZSBzZXR0aW5ncy4iLCJDaGFuZ2UgeW91ciBjb250ZW50IGZpbHRlciBwcmVmZXJlbmNlIjoiQ2hhbmdlIHlvdXIgY29udGVudCBmaWx0ZXIgcHJlZmVyZW5jZSIsIkNoYW5uZWxzIjoiQ2hhbm5lbHMiLCJDaG9vc2UgZmlsZSI6IkNob29zZSBmaWxlIiwiQ2xpY2sgaGVyZSB0byBhZGQgYSBuZXcgY29tbWVudCI6IkNsaWNrIGhlcmUgdG8gYWRkIGEgbmV3IGNvbW1lbnQiLCJDbGljayB0byBzaGFyZSB0aGlzIGNvbW1lbnQgb24ge1NPQ0lBTF9BUFB9IjoiQ2xpY2sgdG8gc2hhcmUgdGhpcyBjb21tZW50IG9uIHtTT0NJQUxfQVBQfSIsIkNvbGxlY3Rpb24gbmFtZSI6IkNvbGxlY3Rpb24gbmFtZSIsIkNvbW1lbnRzIGFyZSBkaXNhYmxlZC4iOiJDb21tZW50cyBhcmUgZGlzYWJsZWQuIiwiQ29tbWVudHMiOiJDb21tZW50cyIsIkNyZWF0aXZlIENvbW1vbnMgTGljZW5zZToiOiJDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2U6IiwiRGVsZXRlIjoiRGVsZXRlIiwiRGltZW5zaW9ucyI6IkRpbWVuc2lvbnMiLCJEb25cdTIwMTl0IHdvcnJ5ISBPbmx5IHlvdSAodGhlIGNyZWF0b3IpIGNhbiBkb3dubG9hZCB0aGlzIHZpZGVvLiI6IkRvblx1MjAxOXQgd29ycnkhIE9ubHkgeW91ICh0aGUgY3JlYXRvcikgY2FuIGRvd25sb2FkIHRoaXMgdmlkZW8uIiwiRG93bmxvYWQgY2FwdGlvbnMgYW5kIHN1YnRpdGxlcyI6IkRvd25sb2FkIGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMiLCJEb3dubG9hZCBMaW5rIjoiRG93bmxvYWQgTGluayIsIkRvd25sb2FkIjoiRG93bmxvYWQiLCJEdWUgdG8geW91ciBwcml2YWN5IHNldHRpbmdzLCB0aGlzIHZpZGVvIGNhbm5vdCBiZSBhZGRlZCB0byBjaGFubmVscyBvciBncm91cHMuIjoiRHVlIHRvIHlvdXIgcHJpdmFjeSBzZXR0aW5ncywgdGhpcyB2aWRlbyBjYW5ub3QgYmUgYWRkZWQgdG8gY2hhbm5lbHMgb3IgZ3JvdXBzLiIsIkVkaXQgU2V0dGluZ3MiOiJFZGl0IFNldHRpbmdzIiwiRWRpdCI6IkVkaXQiLCJFeGl0IGZ1bGxzY3JlZW4iOiJFeGl0IGZ1bGxzY3JlZW4iLCJGZXRjaCI6IkZldGNoIiwiRmlsZSBTaXplIjoiRmlsZSBTaXplIiwiRmlsZSI6IkZpbGUiLCJGaW5pc2hlcyI6IkZpbmlzaGVzIiwiRm9sbG93IjoiRm9sbG93IiwiRm9sbG93aW5nIjoiRm9sbG93aW5nIiwiRm9ybWVyIFZpbWVvIHN0YWZmIG1lbWJlciI6IkZvcm1lciBWaW1lbyBzdGFmZiBtZW1iZXIiLCJmcm9tIHtVU0VSX05BTUV9IjoiZnJvbSB7VVNFUl9OQU1FfSIsImZyb20ge1ZPRF9USVRMRX0iOiJmcm9tIHtWT0RfVElUTEV9IiwiR2V0IG1lIG91dCBvZiBoZXJlISI6IkdldCBtZSBvdXQgb2YgaGVyZSEiLCJHcm91cHMiOiJHcm91cHMiLCJIb3cgd2FzIHlvdXIgdmlld2luZyBleHBlcmllbmNlPyAiOiJIb3cgd2FzIHlvdXIgdmlld2luZyBleHBlcmllbmNlPyAiLCJJbmNvcnJlY3QgcmF0aW5nIjoiSW5jb3JyZWN0IHJhdGluZyIsIkp1c3QgY2hlY2sgeW91ciBpbmJveCBmb3IgYSBtZXNzYWdlIGZyb20gdXMgYW5kIHZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MuIFRoZW4geW91IGNhbiBkbyBhbGwga2luZHMgb2YgY29vbCBzdHVmZiBvbiBWaW1lbyEgKHtBfUhlbHB7XC9BfSkiOiJKdXN0IGNoZWNrIHlvdXIgaW5ib3ggZm9yIGEgbWVzc2FnZSBmcm9tIHVzIGFuZCB2ZXJpZnkgeW91ciBlbWFpbCBhZGRyZXNzLiBUaGVuIHlvdSBjYW4gZG8gYWxsIGtpbmRzIG9mIGNvb2wgc3R1ZmYgb24gVmltZW8hICh7QX1IZWxwe1wvQX0pIiwiTGVhcm4gYWJvdXQgb3RoZXIgdmlvbGF0aW9ucyI6IkxlYXJuIGFib3V0IG90aGVyIHZpb2xhdGlvbnMiLCJMZWFybiBhYm91dCBTdGF0cyI6IkxlYXJuIGFib3V0IFN0YXRzIiwiTGVhcm4gbW9yZSI6IkxlYXJuIG1vcmUiLCJMZWF2ZSB0aGUgZmlyc3QgY29tbWVudDoiOiJMZWF2ZSB0aGUgZmlyc3QgY29tbWVudDoiLCJMZXQgdXMga25vdy4iOiJMZXQgdXMga25vdy4iLCJMaWtlIHdoYXQgeW91IHNhdz8gU2VlIHRoZSBmdWxsIHRpdGxlLiI6Ikxpa2Ugd2hhdCB5b3Ugc2F3PyBTZWUgdGhlIGZ1bGwgdGl0bGUuIiwiTGlrZSI6Ikxpa2UiLCJMaWtlZCI6Ikxpa2VkIiwiTGlrZXMiOiJMaWtlcyIsIkxvYWQge0NPVU5UfSBwcmV2aW91cyBjb21tZW50Ijp7InNpbmd1bGFyIjoiTG9hZCB7Q09VTlR9IHByZXZpb3VzIGNvbW1lbnQiLCJwbHVyYWwiOiJMb2FkIHtDT1VOVH0gcHJldmlvdXMgY29tbWVudHMifSwiTG9hZGluZyI6IkxvYWRpbmciLCJNYW5hZ2UgY29sbGVjdGlvbnMiOiJNYW5hZ2UgY29sbGVjdGlvbnMiLCJNb25leW1ha2VyIjoiTW9uZXltYWtlciIsIm1vcmUiOiJtb3JlIiwiTmV4dCB2aWRlbyI6Ik5leHQgdmlkZW8iLCJOb3QgcGxheWluZyBuaWNlIjoiTm90IHBsYXlpbmcgbmljZSIsIk9ubHkgdmlzaWJsZSB0byB5b3UiOiJPbmx5IHZpc2libGUgdG8geW91IiwiT3JpZ2luYWwgZmlsZSBpcyBpbiB0aGUgYXJjaGl2ZSI6Ik9yaWdpbmFsIGZpbGUgaXMgaW4gdGhlIGFyY2hpdmUiLCJQZW5kaW5nIHN1Ym1pc3Npb24iOiJQZW5kaW5nIHN1Ym1pc3Npb24iLCJQZXJtYWxpbmsgdG8gdGhpcyBjb21tZW50IjoiUGVybWFsaW5rIHRvIHRoaXMgY29tbWVudCIsIlBsYXlzIjoiUGxheXMiLCJwbGVhc2UgbGV0IHVzIGtub3ciOiJwbGVhc2UgbGV0IHVzIGtub3ciLCJQb3J0Zm9saW9zIjoiUG9ydGZvbGlvcyIsIlByZXNlbnRlZCBieSB7QlJBTkRfTkFNRX1cdTIwMTlzIHtDQU1QQUlHTl9USVRMRX0iOiJQcmVzZW50ZWQgYnkge0JSQU5EX05BTUV9XHUyMDE5cyB7Q0FNUEFJR05fVElUTEV9IiwiUHJlc2lkZW50IG9mIHRoZSBVbml0ZWQgU3RhdGVzIjoiUHJlc2lkZW50IG9mIHRoZSBVbml0ZWQgU3RhdGVzIiwiUHJldmlvdXMgdmlkZW8iOiJQcmV2aW91cyB2aWRlbyIsIlB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiI6IlB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiIsIlJlYWQgbW9yZVx1MjAyNiI6IlJlYWQgbW9yZVx1MjAyNiIsIlJlamVjdCI6IlJlamVjdCIsIlJlbWVtYmVyIHRvIGJlIGNvb2wgYW5kIHBsYXkgbmljZSEiOiJSZW1lbWJlciB0byBiZSBjb29sIGFuZCBwbGF5IG5pY2UhIiwiUmVtb3ZlIGNyZWRpdCI6IlJlbW92ZSBjcmVkaXQiLCJSZW50IHtESVNQTEFZX1BSSUNFfSI6IlJlbnQge0RJU1BMQVlfUFJJQ0V9IiwiUmVwbGF5IjoiUmVwbGF5IiwiUmVwbHkgdG8gdGhpcyBjb21tZW50IjoiUmVwbHkgdG8gdGhpcyBjb21tZW50IiwiUmVwbHkiOiJSZXBseSIsIlJlcG9ydCB0aGlzIHZpZGVvIjoiUmVwb3J0IHRoaXMgdmlkZW8iLCJSZXBvcnQgdGhpcyB2aWRlbz8iOiJSZXBvcnQgdGhpcyB2aWRlbz8iLCJSZXRyeSB1cGxvYWQiOiJSZXRyeSB1cGxvYWQiLCJSZXZpZXcgcGFnZSI6IlJldmlldyBwYWdlIiwiU2VlIGFsbCB2aWRlbyBzdGF0cyI6IlNlZSBhbGwgdmlkZW8gc3RhdHMiLCJTZWUgZnVsbCBzdGF0aXN0aWNzIjoiU2VlIGZ1bGwgc3RhdGlzdGljcyIsIlNldHRpbmdzIjoiU2V0dGluZ3MiLCJTaGFyZSI6IlNoYXJlIiwiU2hvdyBtZSB0aGUgdmlkZW8iOiJTaG93IG1lIHRoZSB2aWRlbyIsIlNob3cgbW9yZVx1MjAyNiI6IlNob3cgbW9yZVx1MjAyNiIsIlNvdXJjZSBmaWxlcyBub3QgYWNjZXNzZWQgZm9yIDMwIGRheXMgYXJlIGF1dG9tYXRpY2FsbHkgc3RvcmVkIGluIG91ciBzZWNyZXQgdW5kZXJncm91bmQgc3RvcmFnZSBhcmNoaXZlLiBBcyBzdWNoLCBpdCBtYXkgdGFrZSBhIGZldyBob3VycyB0byByZXRyaWV2ZSB0aGUgZmlsZS4gU3RpbGwgd2FudCB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGU/IjoiU291cmNlIGZpbGVzIG5vdCBhY2Nlc3NlZCBmb3IgMzAgZGF5cyBhcmUgYXV0b21hdGljYWxseSBzdG9yZWQgaW4gb3VyIHNlY3JldCB1bmRlcmdyb3VuZCBzdG9yYWdlIGFyY2hpdmUuIEFzIHN1Y2gsIGl0IG1heSB0YWtlIGEgZmV3IGhvdXJzIHRvIHJldHJpZXZlIHRoZSBmaWxlLiBTdGlsbCB3YW50IHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZT8iLCJTcGFtIjoiU3BhbSIsIlN0YXRzIjoiU3RhdHMiLCJTdWJzY3JpYmUge0RJU1BMQVlfUFJJQ0V9XC97QklMTElOR19QRVJJT0R9IjoiU3Vic2NyaWJlIHtESVNQTEFZX1BSSUNFfVwve0JJTExJTkdfUEVSSU9EfSIsIlRoZSBwZXJzb24gd2hvIGFzc29jaWF0ZWQgYSB3b3JrIHdpdGggdGhpcyBkZWVkIGhhcyBkZWRpY2F0ZWQgdGhlIHdvcmsgdG8gdGhlIHB1YmxpYyBkb21haW4gYnkgd2FpdmluZyBhbGwgb2YgaGlzIG9yIGhlciByaWdodHMgdG8gdGhlIHdvcmsgd29ybGR3aWRlIHVuZGVyIGNvcHlyaWdodCBsYXcsIGluY2x1ZGluZyBhbGwgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzLCB0byB0aGUgZXh0ZW50IGFsbG93ZWQgYnkgbGF3LiBZb3UgY2FuIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQgcGVyZm9ybSB0aGUgd29yaywgZXZlbiBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgYWxsIHdpdGhvdXQgYXNraW5nIHBlcm1pc3Npb24uIjoiVGhlIHBlcnNvbiB3aG8gYXNzb2NpYXRlZCBhIHdvcmsgd2l0aCB0aGlzIGRlZWQgaGFzIGRlZGljYXRlZCB0aGUgd29yayB0byB0aGUgcHVibGljIGRvbWFpbiBieSB3YWl2aW5nIGFsbCBvZiBoaXMgb3IgaGVyIHJpZ2h0cyB0byB0aGUgd29yayB3b3JsZHdpZGUgdW5kZXIgY29weXJpZ2h0IGxhdywgaW5jbHVkaW5nIGFsbCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMsIHRvIHRoZSBleHRlbnQgYWxsb3dlZCBieSBsYXcuIFlvdSBjYW4gY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBwZXJmb3JtIHRoZSB3b3JrLCBldmVuIGZvciBjb21tZXJjaWFsIHB1cnBvc2VzLCBhbGwgd2l0aG91dCBhc2tpbmcgcGVybWlzc2lvbi4iLCJUaGUgcGVyc29uIHdobyB1cGxvYWRlZCB0aGlzIHZpZGVvIG9idmlvdXNseSBkaWRuXHUyMDE5dCBtYWtlIGl0IChpdFx1MjAxOXMgYSBUViBzaG93LCBtb3ZpZSB0cmFpbGVyLCBvciByaXBwZWQgZnJvbSBlbHNld2hlcmUgdGhlIHdlYi4pIjoiVGhlIHBlcnNvbiB3aG8gdXBsb2FkZWQgdGhpcyB2aWRlbyBvYnZpb3VzbHkgZGlkblx1MjAxOXQgbWFrZSBpdCAoaXRcdTIwMTlzIGEgVFYgc2hvdywgbW92aWUgdHJhaWxlciwgb3IgcmlwcGVkIGZyb20gZWxzZXdoZXJlIHRoZSB3ZWIuKSIsIlRoaXMgY29tbWVudCB3aWxsIGJlIHNoYXJlZCBvbiB7U09DSUFMX0FQUH0iOiJUaGlzIGNvbW1lbnQgd2lsbCBiZSBzaGFyZWQgb24ge1NPQ0lBTF9BUFB9IiwiVGhpcyBsaWNlbnNlIGFsbG93cyBmb3IgcmVkaXN0cmlidXRpb24sIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsLCBhcyBsb25nIGFzIGl0IGlzIHBhc3NlZCBhbG9uZyB1bmNoYW5nZWQgYW5kIGluIHdob2xlLCB3aXRoIGNyZWRpdCB0byB5b3UuIjoiVGhpcyBsaWNlbnNlIGFsbG93cyBmb3IgcmVkaXN0cmlidXRpb24sIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsLCBhcyBsb25nIGFzIGl0IGlzIHBhc3NlZCBhbG9uZyB1bmNoYW5nZWQgYW5kIGluIHdob2xlLCB3aXRoIGNyZWRpdCB0byB5b3UuIiwiVGhpcyBsaWNlbnNlIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlIG9mIG91ciBzaXggbWFpbiBsaWNlbnNlcywgb25seSBhbGxvd2luZyBvdGhlcnMgdG8gZG93bmxvYWQgeW91ciB3b3JrcyBhbmQgc2hhcmUgdGhlbSB3aXRoIG90aGVycyBhcyBsb25nIGFzIHRoZXkgY3JlZGl0IHlvdSwgYnV0IHRoZXkgY2FuXHUyMDE5dCBjaGFuZ2UgdGhlbSBpbiBhbnkgd2F5IG9yIHVzZSB0aGVtIGNvbW1lcmNpYWxseS4iOiJUaGlzIGxpY2Vuc2UgaXMgdGhlIG1vc3QgcmVzdHJpY3RpdmUgb2Ygb3VyIHNpeCBtYWluIGxpY2Vuc2VzLCBvbmx5IGFsbG93aW5nIG90aGVycyB0byBkb3dubG9hZCB5b3VyIHdvcmtzIGFuZCBzaGFyZSB0aGVtIHdpdGggb3RoZXJzIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91LCBidXQgdGhleSBjYW5cdTIwMTl0IGNoYW5nZSB0aGVtIGluIGFueSB3YXkgb3IgdXNlIHRoZW0gY29tbWVyY2lhbGx5LiIsIlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyBkaXN0cmlidXRlLCByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yaywgZXZlbiBjb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGZvciB0aGUgb3JpZ2luYWwgY3JlYXRpb24uIFRoaXMgaXMgdGhlIG1vc3QgYWNjb21tb2RhdGluZyBvZiBsaWNlbnNlcyBvZmZlcmVkLiBSZWNvbW1lbmRlZCBmb3IgbWF4aW11bSBkaXNzZW1pbmF0aW9uIGFuZCB1c2Ugb2YgbGljZW5zZWQgbWF0ZXJpYWxzLiI6IlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyBkaXN0cmlidXRlLCByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yaywgZXZlbiBjb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGZvciB0aGUgb3JpZ2luYWwgY3JlYXRpb24uIFRoaXMgaXMgdGhlIG1vc3QgYWNjb21tb2RhdGluZyBvZiBsaWNlbnNlcyBvZmZlcmVkLiBSZWNvbW1lbmRlZCBmb3IgbWF4aW11bSBkaXNzZW1pbmF0aW9uIGFuZCB1c2Ugb2YgbGljZW5zZWQgbWF0ZXJpYWxzLiIsIlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yayBldmVuIGZvciBjb21tZXJjaWFsIHB1cnBvc2VzLCBhcyBsb25nIGFzIHRoZXkgY3JlZGl0IHlvdSBhbmQgbGljZW5zZSB0aGVpciBuZXcgY3JlYXRpb25zIHVuZGVyIHRoZSBpZGVudGljYWwgdGVybXMuIFRoaXMgbGljZW5zZSBpcyBvZnRlbiBjb21wYXJlZCB0byAmbGRxdW87Y29weWxlZnQmcmRxdW87IGZyZWUgYW5kIG9wZW4gc291cmNlIHNvZnR3YXJlIGxpY2Vuc2VzLiBBbGwgbmV3IHdvcmtzIGJhc2VkIG9uIHlvdXJzIHdpbGwgY2FycnkgdGhlIHNhbWUgbGljZW5zZSwgc28gYW55IGRlcml2YXRpdmVzIHdpbGwgYWxzbyBhbGxvdyBjb21tZXJjaWFsIHVzZS4gVGhpcyBpcyB0aGUgbGljZW5zZSB1c2VkIGJ5IFdpa2lwZWRpYSwgYW5kIGlzIHJlY29tbWVuZGVkIGZvciBtYXRlcmlhbHMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gaW5jb3Jwb3JhdGluZyBjb250ZW50IGZyb20gV2lraXBlZGlhIGFuZCBzaW1pbGFybHkgbGljZW5zZWQgcHJvamVjdHMuIjoiVGhpcyBsaWNlbnNlIGxldHMgb3RoZXJzIHJlbWl4LCB0d2VhaywgYW5kIGJ1aWxkIHVwb24geW91ciB3b3JrIGV2ZW4gZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMsIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGFuZCBsaWNlbnNlIHRoZWlyIG5ldyBjcmVhdGlvbnMgdW5kZXIgdGhlIGlkZW50aWNhbCB0ZXJtcy4gVGhpcyBsaWNlbnNlIGlzIG9mdGVuIGNvbXBhcmVkIHRvICZsZHF1bztjb3B5bGVmdCZyZHF1bzsgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUgbGljZW5zZXMuIEFsbCBuZXcgd29ya3MgYmFzZWQgb24geW91cnMgd2lsbCBjYXJyeSB0aGUgc2FtZSBsaWNlbnNlLCBzbyBhbnkgZGVyaXZhdGl2ZXMgd2lsbCBhbHNvIGFsbG93IGNvbW1lcmNpYWwgdXNlLiBUaGlzIGlzIHRoZSBsaWNlbnNlIHVzZWQgYnkgV2lraXBlZGlhLCBhbmQgaXMgcmVjb21tZW5kZWQgZm9yIG1hdGVyaWFscyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBpbmNvcnBvcmF0aW5nIGNvbnRlbnQgZnJvbSBXaWtpcGVkaWEgYW5kIHNpbWlsYXJseSBsaWNlbnNlZCBwcm9qZWN0cy4iLCJUaGlzIGxpY2Vuc2UgbGV0cyBvdGhlcnMgcmVtaXgsIHR3ZWFrLCBhbmQgYnVpbGQgdXBvbiB5b3VyIHdvcmsgbm9uLWNvbW1lcmNpYWxseSwgYW5kIGFsdGhvdWdoIHRoZWlyIG5ldyB3b3JrcyBtdXN0IGFsc28gYWNrbm93bGVkZ2UgeW91IGFuZCBiZSBub24tY29tbWVyY2lhbCwgdGhleSBkb25cdTIwMTl0IGhhdmUgdG8gbGljZW5zZSB0aGVpciBkZXJpdmF0aXZlIHdvcmtzIG9uIHRoZSBzYW1lIHRlcm1zLiI6IlRoaXMgbGljZW5zZSBsZXRzIG90aGVycyByZW1peCwgdHdlYWssIGFuZCBidWlsZCB1cG9uIHlvdXIgd29yayBub24tY29tbWVyY2lhbGx5LCBhbmQgYWx0aG91Z2ggdGhlaXIgbmV3IHdvcmtzIG11c3QgYWxzbyBhY2tub3dsZWRnZSB5b3UgYW5kIGJlIG5vbi1jb21tZXJjaWFsLCB0aGV5IGRvblx1MjAxOXQgaGF2ZSB0byBsaWNlbnNlIHRoZWlyIGRlcml2YXRpdmUgd29ya3Mgb24gdGhlIHNhbWUgdGVybXMuIiwiVGhpcyBsaWNlbnNlIGxldHMgb3RoZXJzIHJlbWl4LCB0d2VhaywgYW5kIGJ1aWxkIHVwb24geW91ciB3b3JrIG5vbi1jb21tZXJjaWFsbHksIGFzIGxvbmcgYXMgdGhleSBjcmVkaXQgeW91IGFuZCBsaWNlbnNlIHRoZWlyIG5ldyBjcmVhdGlvbnMgdW5kZXIgdGhlIGlkZW50aWNhbCB0ZXJtcy4iOiJUaGlzIGxpY2Vuc2UgbGV0cyBvdGhlcnMgcmVtaXgsIHR3ZWFrLCBhbmQgYnVpbGQgdXBvbiB5b3VyIHdvcmsgbm9uLWNvbW1lcmNpYWxseSwgYXMgbG9uZyBhcyB0aGV5IGNyZWRpdCB5b3UgYW5kIGxpY2Vuc2UgdGhlaXIgbmV3IGNyZWF0aW9ucyB1bmRlciB0aGUgaWRlbnRpY2FsIHRlcm1zLiIsIlRoaXMgc291cmNlIGZpbGUgaGFzIGJlZW4gbG92aW5nbHkgc3RvcmVkIGluIG91ciBhcmNoaXZlLiI6IlRoaXMgc291cmNlIGZpbGUgaGFzIGJlZW4gbG92aW5nbHkgc3RvcmVkIGluIG91ciBhcmNoaXZlLiIsIlRoaXMgdmlkZW8gY29udGFpbnMgaGFyYXNzbWVudCwgaW5jaXRlcyBoYXRyZWQsIG9yIGRlcGljdHMgZXh0cmVtZSBvciByZWFsLWxpZmUgdmlvbGVuY2UuIjoiVGhpcyB2aWRlbyBjb250YWlucyBoYXJhc3NtZW50LCBpbmNpdGVzIGhhdHJlZCwgb3IgZGVwaWN0cyBleHRyZW1lIG9yIHJlYWwtbGlmZSB2aW9sZW5jZS4iLCJUaGlzIHZpZGVvIGNvbnRhaW5zIHBvcm5vZ3JhcGh5LCBhZHZlcnRpc2VzIGEgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIGFuIGVyb3RpYyBuYXR1cmUsIG9yIHNlZW1zIHByaW1hcmlseSBmb2N1c2VkIG9uIHNleHVhbCBzdGltdWxhdGlvbi4iOiJUaGlzIHZpZGVvIGNvbnRhaW5zIHBvcm5vZ3JhcGh5LCBhZHZlcnRpc2VzIGEgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIGFuIGVyb3RpYyBuYXR1cmUsIG9yIHNlZW1zIHByaW1hcmlseSBmb2N1c2VkIG9uIHNleHVhbCBzdGltdWxhdGlvbi4iLCJUaGlzIHZpZGVvIGlzIGFsc28gaW4ge0NPVU5UfSBvdGhlciBjb2xsZWN0aW9uLiI6eyJzaW5ndWxhciI6IlRoaXMgdmlkZW8gaXMgYWxzbyBpbiB7Q09VTlR9IG90aGVyIGNvbGxlY3Rpb24uIiwicGx1cmFsIjoiVGhpcyB2aWRlbyBpcyBhbHNvIGluIHtDT1VOVH0gb3RoZXIgY29sbGVjdGlvbnMuIn0sIlRoaXMgdmlkZW8gaXMgYW4gYWR2ZXJ0aXNlbWVudCwgY29tbWVyY2lhbCwgb3IgaXMgYSB2aWRlbyB0aGF0IGFjdGl2ZWx5IHNlbGxzIGEgcHJvZHVjdCBvciBzZXJ2aWNlLiI6IlRoaXMgdmlkZW8gaXMgYW4gYWR2ZXJ0aXNlbWVudCwgY29tbWVyY2lhbCwgb3IgaXMgYSB2aWRlbyB0aGF0IGFjdGl2ZWx5IHNlbGxzIGEgcHJvZHVjdCBvciBzZXJ2aWNlLiIsIlRoaXMgdmlkZW8gaXMgaGlkZGVuIGZyb20gdmltZW8uY29tLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8ge1RJVExFfSI6IlRoaXMgdmlkZW8gaXMgaGlkZGVuIGZyb20gdmltZW8uY29tLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8ge1RJVExFfSIsIlRoaXMgdmlkZW8gaXMgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIGRyaXZlIHRyYWZmaWMgdG8gdGhpcmQgcGFydHkgc2l0ZXMsIHVzZSBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbiAoU0VPKSB0byBtYW5pcHVsYXRlIHNlYXJjaCByYW5raW5ncywgb3Igb3RoZXJ3aXNlIGRlY2VpdmUgb3IgbWlzbGVhZCB0aGUgYXVkaWVuY2UuIjoiVGhpcyB2aWRlbyBpcyBwcmltYXJpbHkgZGVzaWduZWQgdG8gZHJpdmUgdHJhZmZpYyB0byB0aGlyZCBwYXJ0eSBzaXRlcywgdXNlIFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uIChTRU8pIHRvIG1hbmlwdWxhdGUgc2VhcmNoIHJhbmtpbmdzLCBvciBvdGhlcndpc2UgZGVjZWl2ZSBvciBtaXNsZWFkIHRoZSBhdWRpZW5jZS4iLCJUaGlzIHZpZGVvIHNob3VsZCBiZSBtYXJrZWQgYXMgXHUyMDFjTWF0dXJlXHUyMDFkIGR1ZSB0byBudWRpdHksIHByb2Zhbml0eSwgdmlvbGVuY2UsIG9yIGRydWdcL2FsY29ob2wgdXNlLiI6IlRoaXMgdmlkZW8gc2hvdWxkIGJlIG1hcmtlZCBhcyBcdTIwMWNNYXR1cmVcdTIwMWQgZHVlIHRvIG51ZGl0eSwgcHJvZmFuaXR5LCB2aW9sZW5jZSwgb3IgZHJ1Z1wvYWxjb2hvbCB1c2UuIiwiVG9nZ2xlIHZpc2liaWxpdHkgb2Ygc3RhdHMgZ3JhcGgiOiJUb2dnbGUgdmlzaWJpbGl0eSBvZiBzdGF0cyBncmFwaCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJVbmxpa2UiOiJVbmxpa2UiLCJVcCBuZXh0IjoiVXAgbmV4dCIsInVwZGF0ZSB5b3VyIGNvbnRlbnQgcmF0aW5nIHByZWZlcmVuY2VzIjoidXBkYXRlIHlvdXIgY29udGVudCByYXRpbmcgcHJlZmVyZW5jZXMiLCJVcGdyYWRlIGFuZCB3ZVx1MjAxOWxsIGhvbGQgb24gdG8geW91ciBvcmlnaW5hbCB2aWRlbyBmaWxlcy4iOiJVcGdyYWRlIGFuZCB3ZVx1MjAxOWxsIGhvbGQgb24gdG8geW91ciBvcmlnaW5hbCB2aWRlbyBmaWxlcy4iLCJVcGxvYWRlZCBieSB7VVNFUn0iOiJVcGxvYWRlZCBieSB7VVNFUn0iLCJVcGxvYWRlciBkaWQgbm90IG1ha2UgdGhpcyI6IlVwbG9hZGVyIGRpZCBub3QgbWFrZSB0aGlzIiwiVXNlciB2ZXJpZmljYXRpb24iOiJVc2VyIHZlcmlmaWNhdGlvbiIsIlZlcmlmeSB5b3VyIGFjb3VudCI6IlZlcmlmeSB5b3VyIGFjb3VudCIsIlZlcmlmeSI6IlZlcmlmeSIsInZpYSB7QVBQX05BTUV9IjoidmlhIHtBUFBfTkFNRX0iLCJ2aWEge0NBTUVPfSI6InZpYSB7Q0FNRU99IiwiVmlkZW8gZmxhZ2dpbmcgZm9ybSI6IlZpZGVvIGZsYWdnaW5nIGZvcm0iLCJWaWV3IGFsbCBjYXRlZ29yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpZGVvIjoiVmlldyBhbGwgY2F0ZWdvcmllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWRlbyIsIlZpZXcgYWxsIHVzZXJzIGNyZWRpdGVkIGJ5IHRoaXMgdmlkZW8iOiJWaWV3IGFsbCB1c2VycyBjcmVkaXRlZCBieSB0aGlzIHZpZGVvIiwiVmlldyBhbGwiOiJWaWV3IGFsbCIsIlZpZXcgY2hhbm5lbCI6IlZpZXcgY2hhbm5lbCIsIlZpZXcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHZpZGVvIjoiVmlldyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdmlkZW8iLCJWaWV3IHRpdGxlIjoiVmlldyB0aXRsZSIsIlZpbWVvIEJ1c2luZXNzIHVzZXIiOiJWaW1lbyBCdXNpbmVzcyB1c2VyIiwiVmltZW8gY3VyYXRpb24gdGVhbSBtZW1iZXIiOiJWaW1lbyBjdXJhdGlvbiB0ZWFtIG1lbWJlciIsIlZpbWVvIHBhcnRuZXIiOiJWaW1lbyBwYXJ0bmVyIiwiVmltZW8gUGx1cyB1c2VyIjoiVmltZW8gUGx1cyB1c2VyIiwiVmltZW8gUHJvIHVzZXIiOiJWaW1lbyBQcm8gdXNlciIsIlZpbWVvIHNwb25zb3IiOiJWaW1lbyBzcG9uc29yIiwiVmltZW8gc3RhZmYgbWVtYmVyIjoiVmltZW8gc3RhZmYgbWVtYmVyIiwiVmltZW8gc3VwcG9ydCBzcGVjaWFsaXN0IjoiVmltZW8gc3VwcG9ydCBzcGVjaWFsaXN0IiwiV2FudCB0byBsZWF2ZSBhIGNvbW1lbnQ/IEZpcnN0IHlvdVx1MjAxOWxsIG5lZWQgdG8gdmVyaWZ5IHlvdXIgVmltZW8gYWNjb3VudC4iOiJXYW50IHRvIGxlYXZlIGEgY29tbWVudD8gRmlyc3QgeW91XHUyMDE5bGwgbmVlZCB0byB2ZXJpZnkgeW91ciBWaW1lbyBhY2NvdW50LiIsIldhbnQgdG8gbGVhdmUgYSBjb21tZW50PyI6IldhbnQgdG8gbGVhdmUgYSBjb21tZW50PyIsIldhdGNoIGl0IGFnYWluIjoiV2F0Y2ggaXQgYWdhaW4iLCJXZVx1MjAxOXJlIG9uIGl0ISBQbGVhc2UgY2hlY2sgYmFjayBsYXRlciwgYXMgaXQgY291bGQgdGFrZSBhIGZldyBob3Vycy4iOiJXZVx1MjAxOXJlIG9uIGl0ISBQbGVhc2UgY2hlY2sgYmFjayBsYXRlciwgYXMgaXQgY291bGQgdGFrZSBhIGZldyBob3Vycy4iLCJXaGVuIHlvdSBhZGQgdGhpcyBwcml2YXRlIHZpZGVvIHRvIGEgY29sbGVjdGlvbiwgdGhlIHZpZGVvIHdpbGwgYmUgdmlld2FibGUgd2l0aGluIHRoYXQgYWxidW0sIGdyb3VwLCBldGMuIjoiV2hlbiB5b3UgYWRkIHRoaXMgcHJpdmF0ZSB2aWRlbyB0byBhIGNvbGxlY3Rpb24sIHRoZSB2aWRlbyB3aWxsIGJlIHZpZXdhYmxlIHdpdGhpbiB0aGF0IGFsYnVtLCBncm91cCwgZXRjLiIsIldoeSBhcmUgeW91IHJlcG9ydGluZyB0aGlzIHZpZGVvPyI6IldoeSBhcmUgeW91IHJlcG9ydGluZyB0aGlzIHZpZGVvPyIsIldvdWxkIHlvdSBsaWtlIHRvIGluY2x1ZGUgdGhpcyB2aWRlbyBzdWJtaXR0ZWQgYnkge1VTRVJfTkFNRX0gaW4gdGhlIHtHUk9VUF9OQU1FfSBncm91cD8iOiJXb3VsZCB5b3UgbGlrZSB0byBpbmNsdWRlIHRoaXMgdmlkZW8gc3VibWl0dGVkIGJ5IHtVU0VSX05BTUV9IGluIHRoZSB7R1JPVVBfTkFNRX0gZ3JvdXA/IiwiWFhYLXJhdGVkIjoiWFhYLXJhdGVkIiwiWWVzLCBmZXRjaCBvcmlnaW5hbCBmaWxlIjoiWWVzLCBmZXRjaCBvcmlnaW5hbCBmaWxlIiwiWW91IGNhbiB7VVBEQVRFX1lPVVJfUFJFRkVSRU5DRVNfTElOS30gYXQgYW55IHRpbWUuIjoiWW91IGNhbiB7VVBEQVRFX1lPVVJfUFJFRkVSRU5DRVNfTElOS30gYXQgYW55IHRpbWUuIiwiWW91IGNhbm5vdCBjcmVhdGUge1RJVExFfSB3aGlsZSBpbiBQcml2YXRlIE1vZGUuIElmIHlvdSB0aGluayBpdCB3YXMgZmxhZ2dlZCBpbiBlcnJvciwge1BMRUFTRV9MRVRfVVNfS05PV19MSU5LfSI6IllvdSBjYW5ub3QgY3JlYXRlIHtUSVRMRX0gd2hpbGUgaW4gUHJpdmF0ZSBNb2RlLiBJZiB5b3UgdGhpbmsgaXQgd2FzIGZsYWdnZWQgaW4gZXJyb3IsIHtQTEVBU0VfTEVUX1VTX0tOT1dfTElOS30iLCJZb3UgbmVlZCBhIDM2MCBwbGF5ZXIgdG8gd2F0Y2ggdGhpcyBkb3dubG9hZC4ge0F9U2VlIG91ciByZWNvbW1lbmRhdGlvbnN7XC9BfS4iOiJZb3UgbmVlZCBhIDM2MCBwbGF5ZXIgdG8gd2F0Y2ggdGhpcyBkb3dubG9hZC4ge0F9U2VlIG91ciByZWNvbW1lbmRhdGlvbnN7XC9BfS4iLCJZb3VyIGFjY291bnQgaGFzIGJlZW4gZmxhZ2dlZCBmb3Igc3BhbS4gSWYgeW91IHRoaW5rIGl0IHdhcyBmbGFnZ2VkIGluIGVycm9yLCB7UExFQVNFX0xFVF9VU19LTk9XX0xJTkt9LiI6IllvdXIgYWNjb3VudCBoYXMgYmVlbiBmbGFnZ2VkIGZvciBzcGFtLiBJZiB5b3UgdGhpbmsgaXQgd2FzIGZsYWdnZWQgaW4gZXJyb3IsIHtQTEVBU0VfTEVUX1VTX0tOT1dfTElOS30uIiwie0NPVU5UfSBDYXRlZ29yeSI6eyJzaW5ndWxhciI6IntDT1VOVH0gQ2F0ZWdvcnkiLCJwbHVyYWwiOiJ7Q09VTlR9IENhdGVnb3JpZXMifSwie0NPVU5UfSBDb2xsZWN0aW9uIjp7InNpbmd1bGFyIjoie0NPVU5UfSBDb2xsZWN0aW9uIiwicGx1cmFsIjoie0NPVU5UfSBDb2xsZWN0aW9ucyJ9LCJ7Q09VTlR9IENvbW1lbnQiOnsic2luZ3VsYXIiOiJ7Q09VTlR9IENvbW1lbnQiLCJwbHVyYWwiOiJ7Q09VTlR9IENvbW1lbnRzIn0sIntDT1VOVH0gQ3JlZGl0Ijp7InNpbmd1bGFyIjoie0NPVU5UfSBDcmVkaXQiLCJwbHVyYWwiOiJ7Q09VTlR9IENyZWRpdHMifSwie0NPVU5UfSBMaWtlIjp7InNpbmd1bGFyIjoie0NPVU5UfSBMaWtlIiwicGx1cmFsIjoie0NPVU5UfSBMaWtlcyJ9LCJ7Q09VTlR9IFBob3RvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBQaG90byIsInBsdXJhbCI6IntDT1VOVH0gUGhvdG9zIn0sIntDT1VOVH0gUGxheSI6eyJzaW5ndWxhciI6IntDT1VOVH0gUGxheSIsInBsdXJhbCI6IntDT1VOVH0gUGxheXMifSwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIk5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiOiJObyBhY3Rpdml0eSBpbiB0aGUgcGFzdCAzMCBkYXlzIiwiU2VlIGFsbCI6IlNlZSBhbGwiLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC91dGlscy9wbGF5ZXJfbWFuYWdlci9wbGF5ZXJfbWFuYWdlci5taW4uanM/NTVhYjcwODMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIGlmICh0eXBlb2YgcGxheWVyQXNzZXRVcmxzICE9PSAndW5kZWZpbmVkJykgewogIFBsYXllck1hbmFnZXIucnVuKHBsYXllckFzc2V0VXJscyk7CiAgfQogPC9zY3JpcHQ+CgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3JlYWN0X3Byb2RfY29tYmluZWQubWluLmpzP2I2ZWU3YTRlIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9jbGlwX2NvbWJpbmVkLm1pbi5qcz9kYjRiOWFjMSI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvYWN0aXZpdHlfdG9wbmF2X2NvbWJpbmVkLm1pbi5qcz81MzliNmM4MyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvX2J1bmRsZXMvY2xpcC5idW5kbGUubWluLmpzPzk1MGRlYjdiIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9tb2R1bGVzL2dsb2JhbC9hYmxpbmNvbG4vaG9zdF92aWRlb3MubWluLmpzPzY1ZGM0NTFhIj48L3NjcmlwdD4KCiA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvY2xpcF9iZXRhX2xpYnNfYXN5bmNfY29tYmluZWQubWluLmpzPzE4ZmJlNjlhIj48L3NjcmlwdD4KIDxzY3JpcHQgYXN5bmMgc3JjPSIvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogCiAgIGlmICghdmltZW8uYnlwYXNzX3BsYXllcl9yZXNwb25zaXZlX2RlbGVnYXRlcykgewogdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzIHx8IHt9OwogdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuU2hhcmVPdmVybGF5ID0gdmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzLndpbGxPcGVuU2hhcmVPdmVybGF5IHx8IGZ1bmN0aW9uKGlkKSB7CiBQbGF5ZXJNYW5hZ2VyLnBhdXNlQWxsUGxheWVycygpOwogdmltZW8uc2hhcmUuUG9wdXAoaWQpOwogcmV0dXJuIGZhbHNlOwogfTsKCiB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5Mb2dpbkZvcm0gPSB2aW1lby5wbGF5ZXJfcmVzcG9uc2l2ZV9kZWxlZ2F0ZXMud2lsbE9wZW5Mb2dpbkZvcm0gfHwgZnVuY3Rpb24oaWQsIGNvbnRleHQpIHsKIGlmICh0eXBlb2YgdmltZW8uTW9kYWwgIT09ICd1bmRlZmluZWQnKSB7CiBQbGF5ZXJNYW5hZ2VyLnBhdXNlQWxsUGxheWVycygpOwoKIGlmIChjb250ZXh0KSB7CiB2aW1lby5TZXNzaW9uLmNyZWF0ZSh7IHBsYXllcjogMSwgY2xpcF9pZDogaWQsIGNvbnRleHQ6IGNvbnRleHQgfSk7CiB9CiBlbHNlIHsKIHZpbWVvLlNlc3Npb24uY3JlYXRlKCk7CiB9CgogcmV0dXJuIGZhbHNlOwogfQogfTsKCiBpZiAoUGxheWVyTWFuYWdlcikgewogUGxheWVyTWFuYWdlci5zZXREZWZhdWx0RGVsZWdhdGUodmltZW8ucGxheWVyX3Jlc3BvbnNpdmVfZGVsZWdhdGVzKTsKIH0KIH0KIAogaWYgKFBsYXllck1hbmFnZXIpIHsKIFBsYXllck1hbmFnZXIuZGlzcGF0Y2hSZWFkeVNpZ25hbHMoKTsKIH0KIAogIH0KCiAgJChkb2N1bWVudCkucmVhZHkob25WaW1lb0RvbVJlYWR5KTsKICA8L3NjcmlwdD4KCiAgPHNjcmlwdD4KIHZhciBnb29nbGVfYWRfY2xpZW50ID0gJ2NhLWl3b24tdmltZW8nLAogZ29vZ2xlX2FkX291dHB1dCA9ICdqcycsCiBnb29nbGVfbWF4X251bV9hZHMgPSAnMycsCiBnb29nbGVfYWRfdHlwZSA9ICd0ZXh0JywKIGdvb2dsZV9lbmNvZGluZyA9ICd1dGY4JywKIGdvb2dsZV9mZWVkYmFjayA9ICdvbicsCiBnb29nbGVfa3dfdHlwZSA9ICdicm9hZCcsCiBnb29nbGVfa3cgPSAnJzsKCiBkb2N1bWVudC53cml0ZSgnPHNjcicrJ2lwdCBzcmM9Ii8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzIj48L3NjcicrJ2lwdD4nKTsKIDwvc2NyaXB0PiAKIDwvYm9keT4KPC9odG1sPgo=
148
- http_version:
149
- recorded_at: Mon, 27 Mar 2017 21:00:58 GMT
150
- - request:
151
- method: head
152
- uri: https://vimeo.com/193970014
153
- body:
154
- encoding: US-ASCII
155
- string: ''
156
- headers:
157
- User-Agent:
158
- - VideoInfo/2.7
159
- Accept:
160
- - "*/*"
161
- response:
162
- status:
163
- code: 200
164
- message: OK
165
- headers:
166
- Server:
167
- - nginx
168
- Content-Type:
169
- - text/html; charset=UTF-8
170
- Expires:
171
- - Mon, 27 Mar 2017 22:23:44 GMT
172
- X-Ua-Compatible:
173
- - IE=edge
174
- X-Xss-Protection:
175
- - 1; mode=block
176
- X-Content-Type-Options:
177
- - nosniff
178
- X-Frame-Options:
179
- - sameorigin
180
- Strict-Transport-Security:
181
- - max-age=15552000; includeSubDomains; preload
182
- Content-Security-Policy-Report-Only:
183
- - 'default-src https: data: blob: ''unsafe-inline'' ''unsafe-eval''; report-uri
184
- /_csp'
185
- Via:
186
- - 1.1 varnish
187
- - 1.1 varnish
188
- - 1.1 varnish
189
- Cache-Control:
190
- - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
191
- X-Varnish-Cache:
192
- - '1'
193
- X-Vserver:
194
- - dfvimeowebproxy5
195
- Fastly-Debug-Digest:
196
- - 02e1f2414b0d1d18a47c8b603ce77274c63f8e136b539f61d8886f81e2c693b4
197
- Content-Length:
198
- - '69340'
199
- Accept-Ranges:
200
- - bytes
201
- Date:
202
- - Mon, 27 Mar 2017 21:00:58 GMT
203
- Age:
204
- - '0'
205
- Connection:
206
- - keep-alive
207
- X-Served-By:
208
- - cache-iad2120-IAD, cache-lax8624-LAX
209
- X-Cache:
210
- - MISS, MISS
211
- X-Cache-Hits:
212
- - 0, 0
213
- X-Timer:
214
- - S1490648458.176245,VS0,VE91
215
- Vary:
216
- - User-Agent,Accept-Encoding
217
- body:
218
- encoding: UTF-8
219
- string: ''
220
- http_version:
221
- recorded_at: Mon, 27 Mar 2017 21:00:58 GMT
222
- recorded_with: VCR 3.0.3