video_info 2.6.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/unit_test.yml +39 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +242 -1
- data/CONTRIBUTING.md +11 -0
- data/Gemfile +1 -1
- data/Guardfile +2 -2
- data/README.md +29 -7
- data/lib/video_info.rb +25 -28
- data/lib/video_info/provider.rb +25 -12
- data/lib/video_info/providers/dailymotion.rb +19 -3
- data/lib/video_info/providers/vimeo.rb +3 -3
- data/lib/video_info/providers/vimeo_api.rb +20 -11
- data/lib/video_info/providers/vimeo_scraper.rb +93 -23
- data/lib/video_info/providers/wistia.rb +2 -1
- data/lib/video_info/providers/youtube.rb +16 -2
- data/lib/video_info/providers/youtube_api.rb +42 -8
- data/lib/video_info/providers/youtube_scraper.rb +64 -31
- data/lib/video_info/providers/youtubeplaylist.rb +5 -2
- data/lib/video_info/providers/youtubeplaylist_api.rb +22 -1
- data/lib/video_info/providers/youtubeplaylist_scraper.rb +16 -3
- data/lib/video_info/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +82 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/1_3_21_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/1_3_22_1.yml +91 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +151 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +68 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +127 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +70 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +68 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +130 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +130 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +132 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +130 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +128 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +131 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +130 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +131 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +128 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +129 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +129 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +129 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +130 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +129 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +129 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_20_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_20_1.yml +80 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_19_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_19_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_21_1.yml +159 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_21_1.yml +80 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +240 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +160 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +80 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +80 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +240 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_18_1.yml +236 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_18_1.yml +82 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +236 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +82 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +235 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +84 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +236 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +84 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +159 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_22_1.yml +158 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_22_1.yml +84 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +156 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +82 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/1_12_1_1.yml +234 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/2_12_1_1.yml +78 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/1_12_2_1.yml +233 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/2_12_2_1.yml +78 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/1_12_3_1.yml +235 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/2_12_3_1.yml +73 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/1_12_4_1.yml +234 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/2_12_4_1.yml +77 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +75 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +79 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +86 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +86 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +86 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +86 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/1_3_15_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +85 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +87 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_18_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_18_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +114 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_a_video_without_description/_description/1_1_1_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +249 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_17_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_17_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +115 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +115 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +335 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +335 -0
- 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
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +243 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +60 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_21_1.yml +59 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_21_1.yml +187 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +120 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +154 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +154 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_21_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_22_1.yml +274 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_23_1.yml +274 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_18_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large_2x/1_3_16_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_maxres/1_3_17_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +165 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +112 -0
- data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +114 -0
- data/spec/lib/video_info/provider_spec.rb +42 -22
- data/spec/lib/video_info/providers/dailymotion_spec.rb +75 -27
- data/spec/lib/video_info/providers/vimeo_spec.rb +270 -174
- data/spec/lib/video_info/providers/wistia_spec.rb +59 -20
- data/spec/lib/video_info/providers/youtube_playlist_spec.rb +97 -41
- data/spec/lib/video_info/providers/youtube_scraper_spec.rb +14 -0
- data/spec/lib/video_info/providers/youtube_spec.rb +441 -384
- data/spec/lib/video_info_spec.rb +27 -25
- data/spec/spec_helper.rb +6 -1
- data/tmp/rspec_guard_result +25 -0
- data/video_info.gemspec +11 -14
- metadata +358 -100
- data/.travis.yml +0 -13
- data/foo.txt +0 -33
- data/lib/video_info/providers/vkontakte.rb +0 -170
- data/spec/lib/video_info/providers/vimeo_api_spec.rb +0 -242
- data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -173
- data/spec/lib/video_info/providers/youtube_api_spec.rb +0 -476
- data/spec/lib/video_info/providers/youtube_playlist_api_spec.rb +0 -187
@@ -0,0 +1,112 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=youtube_api_key_123&maxResults=50&part=snippet&playlistId=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- VideoInfo/2.8.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=UTF-8
|
23
|
+
Vary:
|
24
|
+
- Origin
|
25
|
+
- Referer
|
26
|
+
- X-Origin
|
27
|
+
Date:
|
28
|
+
- Tue, 27 Oct 2020 18:42:18 GMT
|
29
|
+
Server:
|
30
|
+
- scaffolding on HTTPServer2
|
31
|
+
Cache-Control:
|
32
|
+
- private
|
33
|
+
X-Xss-Protection:
|
34
|
+
- '0'
|
35
|
+
X-Frame-Options:
|
36
|
+
- SAMEORIGIN
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
Alt-Svc:
|
40
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
41
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
42
|
+
ma=2592000; v="46,43"
|
43
|
+
Transfer-Encoding:
|
44
|
+
- chunked
|
45
|
+
body:
|
46
|
+
encoding: ASCII-8BIT
|
47
|
+
string: !binary |-
|
48
|
+
ewogICJpdGVtcyI6IFsKICAgIHsKICAgICAgImtpbmQiOiAieW91dHViZSNwbGF5bGlzdEl0ZW0iLAogICAgICAiZXRhZyI6ICJkbzh2ZWJnVnpBM1BkbEtSUlh3QWctLXJsZFUiLAogICAgICAiaWQiOiAiVUV3NWFGY3hkVk0yU0ZWbWRFeGtTRWsyVWtsellXWXRhVmhVYlRBNWNXNUZjaTR3TVRjeU1EaEdRVUU0TlRJek0wWTUiLAogICAgICAic25pcHBldCI6IHsKICAgICAgICAicHVibGlzaGVkQXQiOiAiMjAxMy0wOC0wOVQwNTowOTo1MVoiLAogICAgICAgICJjaGFubmVsSWQiOiAiVUNNRFF4bTdjVXgzeVhrZmVIYTV6SklRIiwKICAgICAgICAidGl0bGUiOiAiWW91VHViZSBDb250ZW50IElEIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKICAgICAgICAidGh1bWJuYWlscyI6IHsKICAgICAgICAgICJkZWZhdWx0IjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvOWcyVTEyU3NSbnMvZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiA5MAogICAgICAgICAgfSwKICAgICAgICAgICJtZWRpdW0iOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85ZzJVMTJTc1Jucy9tcWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMzIwLAogICAgICAgICAgICAiaGVpZ2h0IjogMTgwCiAgICAgICAgICB9LAogICAgICAgICAgImhpZ2giOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85ZzJVMTJTc1Jucy9ocWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNDgwLAogICAgICAgICAgICAiaGVpZ2h0IjogMzYwCiAgICAgICAgICB9LAogICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvOWcyVTEyU3NSbnMvc2RkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDY0MCwKICAgICAgICAgICAgImhlaWdodCI6IDQ4MAogICAgICAgICAgfSwKICAgICAgICAgICJtYXhyZXMiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85ZzJVMTJTc1Jucy9tYXhyZXNkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDEyODAsCiAgICAgICAgICAgICJoZWlnaHQiOiA3MjAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFubmVsVGl0bGUiOiAiVGVhbVlvdVR1YmUgW0hlbHBdIiwKICAgICAgICAicGxheWxpc3RJZCI6ICJQTDloVzF1UzZIVWZ0TGRISTZSSXNhZi1pWFRtMDlxbkVyIiwKICAgICAgICAicG9zaXRpb24iOiAwLAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICI5ZzJVMTJTc1JucyIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInlvdXR1YmUjcGxheWxpc3RJdGVtIiwKICAgICAgImV0YWciOiAiaUpOaldzRmE2djhBN21iejUxUVhlNEc2NHJFIiwKICAgICAgImlkIjogIlVFdzVhRmN4ZFZNMlNGVm1kRXhrU0VrMlVrbHpZV1l0YVZoVWJUQTVjVzVGY2k1RFFVTkVSRFEyTmtJelJVUXhOVFkxIiwKICAgICAgInNuaXBwZXQiOiB7CiAgICAgICAgInB1Ymxpc2hlZEF0IjogIjIwMTUtMDQtMjJUMjE6NDg6NDNaIiwKICAgICAgICAiY2hhbm5lbElkIjogIlVDTURReG03Y1V4M3lYa2ZlSGE1ekpJUSIsCiAgICAgICAgInRpdGxlIjogIllvdVR1YmUgQ29weXJpZ2h0IEJhc2ljcyIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL09RVkhXc1RIY29jL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvT1FWSFdzVEhjb2MvbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvT1FWSFdzVEhjb2MvaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL09RVkhXc1RIY29jL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFubmVsVGl0bGUiOiAiVGVhbVlvdVR1YmUgW0hlbHBdIiwKICAgICAgICAicGxheWxpc3RJZCI6ICJQTDloVzF1UzZIVWZ0TGRISTZSSXNhZi1pWFRtMDlxbkVyIiwKICAgICAgICAicG9zaXRpb24iOiAxLAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICJPUVZIV3NUSGNvYyIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInlvdXR1YmUjcGxheWxpc3RJdGVtIiwKICAgICAgImV0YWciOiAibGdRaTZST1Bla3NNOWl6OFFGOVFCSThsVFhzIiwKICAgICAgImlkIjogIlVFdzVhRmN4ZFZNMlNGVm1kRXhrU0VrMlVrbHpZV1l0YVZoVWJUQTVjVzVGY2k0NU5EazFSRVpFTnpoRU16VTVNRFF6IiwKICAgICAgInNuaXBwZXQiOiB7CiAgICAgICAgInB1Ymxpc2hlZEF0IjogIjIwMjAtMDUtMjlUMTU6Mjg6NTBaIiwKICAgICAgICAiY2hhbm5lbElkIjogIlVDTURReG03Y1V4M3lYa2ZlSGE1ekpJUSIsCiAgICAgICAgInRpdGxlIjogIlRoZSBMaWZlIG9mIGEgRmxhZyIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIuKAnEZsYWdz4oCdIG9uIFlvdVR1YmUgbWFyayBjb250ZW50IHRoYXQgbWF5IHZpb2xhdGUgb3VyIENvbW11bml0eSBHdWlkZWxpbmVzLiBUaGlzIHZpZGVvIGV4cGxhaW5zIGhvdyBZb3VUdWJlIHJlY2VpdmVzIGZsYWdzLCBhY3Rpb25zIHJldmlld2VycyB0YWtlIG9uIGZsYWdzIGFuZCBvdGhlciBwcm9jZXNzZXMgYW5kIHBvbGljaWVzIHRoYXQgaGVscCB1cyBrZWVwIHRoZSBZb3VUdWJlIGNvbW11bml0eSBzYWZlLiBcblxuUmVwb3J0IGluYXBwcm9wcmlhdGUgY29udGVudCBvbiBZb3VUdWJlOiBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS95b3V0dWJlL2Fuc3dlci8yODAyMDI3P2hsPWVuXG5MZWFybiBtb3JlIGFib3V0IHdoeSBmbGFnZ2luZyBtYXR0ZXJzOiBodHRwczovL3lvdXR1YmUuZ29vZ2xlYmxvZy5jb20vMjAxNi8wOS93aHktZmxhZ2dpbmctbWF0dGVycy5odG1sXG5HZXQgdG8ga25vdyBZb3VUdWJlJ3MgQ29tbXVuaXR5IEd1aWRlbGluZXM6IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3l0L2Fib3V0L3BvbGljaWVzLyNjb21tdW5pdHktZ3VpZGVsaW5lc1xuUmVhZCB0aGUgWW91VHViZSBDb21tdW5pdHkgR3VpZGVsaW5lcyBlbmZvcmNlbWVudCByZXBvcnQ6IGh0dHBzOi8vdHJhbnNwYXJlbmN5cmVwb3J0Lmdvb2dsZS5jb20vXG5cblRoYW5rcyBmb3IgaGVscGluZyB1cyBrZWVwIHRoZSBZb3VUdWJlIGNvbW11bml0eSBzYWZlLiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1dLOHFSTlNtaEVVL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvV0s4cVJOU21oRVUvbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvV0s4cVJOU21oRVUvaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1dLOHFSTlNtaEVVL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4cmVzIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvV0s4cVJOU21oRVUvbWF4cmVzZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjgwLAogICAgICAgICAgICAiaGVpZ2h0IjogNzIwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhbm5lbFRpdGxlIjogIlRlYW1Zb3VUdWJlIFtIZWxwXSIsCiAgICAgICAgInBsYXlsaXN0SWQiOiAiUEw5aFcxdVM2SFVmdExkSEk2UklzYWYtaVhUbTA5cW5FciIsCiAgICAgICAgInBvc2l0aW9uIjogMiwKICAgICAgICAicmVzb3VyY2VJZCI6IHsKICAgICAgICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgICAgICAgInZpZGVvSWQiOiAiV0s4cVJOU21oRVUiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ5b3V0dWJlI3BsYXlsaXN0SXRlbSIsCiAgICAgICJldGFnIjogIm94d3h1QXBwZGJuWGtnRkttVjRCWmpmckVOayIsCiAgICAgICJpZCI6ICJVRXc1YUZjeGRWTTJTRlZtZEV4a1NFazJVa2x6WVdZdGFWaFViVEE1Y1c1RmNpNUdOak5EUkRSRU1EUXhPVGhDTURRMiIsCiAgICAgICJzbmlwcGV0IjogewogICAgICAgICJwdWJsaXNoZWRBdCI6ICIyMDIwLTA1LTI5VDE2OjA4OjA5WiIsCiAgICAgICAgImNoYW5uZWxJZCI6ICJVQ01EUXhtN2NVeDN5WGtmZUhhNXpKSVEiLAogICAgICAgICJ0aXRsZSI6ICIxNeWIhuOBp+WIhuOBi+OCi++8geOAjuOCs+ODn+ODpeODi+ODhuOCo+OCrOOCpOODieODqeOCpOODs+OAj1lvdVR1YmVy44GM5b+F44Ga5a6I44KL44G544GN44Or44O844OrIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAi77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkOWFrOW8j0xJTkXjgJFcbmh0dHBzOi8vcGVyYWljaGkuY29tL2xhbmRpbmdfcGFnZXMvdmlldy9zYWthaWxpbmVcbuWFqOWbveOBp+OBrllvdVR1YmVy44Kq44OV5Lya44O744OT44K444ON44K55ZCR44GR55u46KuH5Lya44Gq44Gp44CB44Os44OZ44Or44Ki44OD44OX5oOF5aCx44KS5YWI6KGM6YWN5L+h44GX44Gm44GE44G+44GZXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ57WM5Za26ICF5ZCR44GR44Kq44Oz44Op44Kk44Oz44K144Ot44Oz44CRXG5odHRwczovL2NvbW11bml0eS5jYW1wLWZpcmUuanAvcHJvamVjdHMvdmlldy8yNTE2NjZcbuWFqOWbveOBruWkmuW9qeOBqualreeoruOBruODk+OCuOODjeOCuVlvdVR1YmVy44GM5Y+C5Yqg44CC6YWS5LqV44Gu44OO44Km44OP44Km44O75a6f6Le144OH44O844K/44Gv44GT44GT44Gr5YWx5pyJ44GX44Gm44GE44G+44GZXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJBTTlPjgJFcbkZhY2Vib29rXG5odHRwczovL3d3dy5mYWNlYm9vay5jb20veW9zaGl0YWRhLnNha2FpXG5cblR3aXR0ZXJcbmh0dHBzOi8vdHdpdHRlci5jb20veW9zaGl0YWRhc2FrYWlcblxu5rCX6Lu944Gr44OV44Kp44Ot44O844GP44Gg44GV44GE44CA4oC7RkLjga/kuIDoqIDjg6Hjg4Pjgrvjg7zjgrjjgYTjgZ/jgaDjgZHjgovjgajliqnjgYvjgorjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG7ilrzjgrPjg4Hjg6njgoLjgZzjgbLjgZTopqfjgY/jgaDjgZXjgYTilrxcblxu4pGgWW91VHViZe+8huWLleeUu+OBruWIneW/g+iAheOBq+imi+OBpuOBu+OBl+OBhOOCquOCueOCueODoeWLleeUu1xu4pGh5YuV55S744Gn5L2/55So44GX44Gm44GE44KL5pKu5b2x5Zmo5p2QXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7zphZLkupXnpaXmraNcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaAgWW91VHViZeWIneW/g+iAheOBq+OCquOCueOCueODoeWLleeUu+OBvuOBqOOCgeOBvuOBl+OBn++8gVxuXG7jgJBMdi4x44CRMTDmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcVZJTEthLWh4by0tbVhGeW1VSE1uVVxuXG7jgJBMdi4y44CRNuacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9wb0toTDZ5OENfVlpFUUdjckhFMzFSXG5cbuOAkEx2LjPjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3J2RVp0YzNIVldCQUh0OEhacmx0c2Zcblxu44CQMTAw5Lq65YuV55S744Ki44OJ44OQ44Kk44K544CRXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BrRm1zdFZxT1FTOVNmZ0Y1Yk1fRDZcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaHphZLkupXjga7kvb/nlKjlmajmnZDvvIjjgqLjg57jgr7jg7PjgqLjgr3jgrfjgqjjgqTjg4jjg5fjg63jgrDjg6njg6DjgpLliKnnlKjvvIlcblxu44CQ44Kr44Oh44Op44CRUGFuYXNvbmljIEdINVxuaHR0cHM6Ly9hbXpuLnRvLzM0TkY3aUdcblxu44CQ5omL6aCD44Os44Oz44K644CRIFNVTU1JTFVYIDE1bW0vRjEuN1xuaHR0cHM6Ly9hbXpuLnRvLzJVN2xkd1Bcblxu44CQ6YeN5a6d44Os44Oz44K644CRU1VNTUlMVVggMTJtbS9GMS40XG5odHRwczovL2Ftem4udG8vMndXdnpXNFxuXG7jgJDjgrPjg7Pjg4fjgrjjgJFQYW5hc29uaWMgRE1DLUxYOS1LXG5odHRwOi8vYW16bi50by8yRjdVYk9uXG7igLvjgrnjg57jg5vjgYvjgonjgrnjg4bjg4Pjg5fjgqLjg4Pjg5fjgavkvqHmoLzjg7vmgKfog73jg7vnlLvos6pcblxu44CQ5LiJ6ISa44CRTWFuZnJvdHRvIOS4ieiEmuOCouODq+ODnzXmrrUg44OW44Op44OD44KvXG5odHRwOi8vYW16bi50by8yRkpPeFBEXG5cbuOAkOeFp+aYjuOAkVlvbmdudW8gTEVE44Op44Kk44OIIDYwMOeQg+OBrkxFROOCkuaQrei8iVxuaHR0cDovL2Ftem4udG8vMkhWaXc3UVxuXG7jgJDlpbPmgKflkJHjgZHjg6njgqTjg4jjgJHjg6rjg7PjgrDjg6njgqTjg4ggRk9TSVRBTiDlpJblvoQzNmNtLzE044Kk44Oz44OBXG5odHRwczovL2Ftem4udG8vMlZsYkV0a1xuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGi5pig5YOP44OH44Kj44Os44Kv44K/44O8IOmFkuS6leelpeato1xuXG7imIXjg5fjg63jg5XjgqPjg7zjg6tcbjE5ODDlubTnlJ/jgb7jgozjgIDnpo/kupXnnIzlh7rouqvjgIAzOeats1xu5pig5YOP5Yi25L2c5q20IDE35bm044CAODDmpa3nqK4xMDAwMOacrOS7peS4iuWItuS9nFxuXG4yMOats+OBi+OCieadseS6rOOCkuS4reW/g+OBq+ODleODquODvOaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOOBqOOBl+OBpua0u+WLleOAglxuMjbmrbPjgYvjgonjga/npo/kupXnnIzjgavjgYLjgovjgrHjg7zjg5bjg6vjg4bjg6zjg5PjgavmiYDlsZ7jgILjgqvjg6Hjg6njg57jg7PjgIHjg6rjg53jg7zjgr/jg7zjgIHoqJjogIXjgIHmmKDlg4/nt6jpm4bjgarjgannlarntYTliLbkvZwg5qWt5YuZ5YWo6Iis44KS5ouF5b2T44CCXG4zNOats+OBi+OCieOBr+S4reWwj+S8gealreOCkuWvvuixoeOBqyBZb3VUdWJl5bCC6ZaAIOaYoOWDj+ijveS9nOOBruOBu+OBi+OAgeWLleeUu+OCu+ODn+ODiuODvOOChOS8gealreOBrllvdVR1YmXjg4Hjg6Pjg7Pjg43jg6vmp4vnr4njgpLjgrXjg53jg7zjg4jjgIJcblxu6ZuG5a6i5YuV55S744Gl44GP44KK44Gr5b+F6KaB44GqIOS8geeUu+ODu+aSruW9seODu+e3qOmbhuODu+eZuuS/oeODu+apn+adkOODu+ipseOBl+aWueOCkuODiOODvOOCv+ODq+OBp+aVmeOBiOOCieOCjOOCi+WbveWGheWUr+S4gOOBruaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvFxuMjAxOeW5tDXmnIjjgYvjgonml6XmnKzjgacz5Lq655uu44GuWW91VHViZeWFrOW8j+ODk+ODh+OCquOCs+ODs+ODiOODquODk+ODpeODvOOCv+ODvOOBqOOBl+OBpua0u+WLleS4rVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKYheS8gealreWQkeOBkeWLleeUu+ODnuODvOOCseODhuOCo+ODs+OCsOWwjuWFpeebuOirh1xuaHR0cHM6Ly9nb2xkZW4tbW9ua2V5LnR2L2NvbnRhY3QuaHRtbFxu4oC75LqL5qWt55u46KuH5Lul5aSW44Gu5ZWP5ZCI44Gb44Gr44Gv5a++5b+c44GE44Gf44GX44GL44Gt44G+44GZ44Gu44Gn44GU5LqG5om/44GP44Gg44GV44GEXG7kuIDoiKznmoTjgaros6rllY/jga9Zb3VUdWJl44Gr44Kz44Oh44Oz44OI44GP44Gg44GV44GEXG5cblxuI+OBv+OCk+OBquOBjOWkluWHuuOCkuW/mOOCjOOCi+OBj+OCieOBhOiJr+OBhOWLleeUu+OCkuS9nOOCjeOBhiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1F0d3BsU0c2VnZNL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUXR3cGxTRzZWdk0vbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUXR3cGxTRzZWdk0vaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1F0d3BsU0c2VnZNL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4cmVzIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUXR3cGxTRzZWdk0vbWF4cmVzZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjgwLAogICAgICAgICAgICAiaGVpZ2h0IjogNzIwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhbm5lbFRpdGxlIjogIlRlYW1Zb3VUdWJlIFtIZWxwXSIsCiAgICAgICAgInBsYXlsaXN0SWQiOiAiUEw5aFcxdVM2SFVmdExkSEk2UklzYWYtaVhUbTA5cW5FciIsCiAgICAgICAgInBvc2l0aW9uIjogMywKICAgICAgICAicmVzb3VyY2VJZCI6IHsKICAgICAgICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgICAgICAgInZpZGVvSWQiOiAiUXR3cGxTRzZWdk0iCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ5b3V0dWJlI3BsYXlsaXN0SXRlbSIsCiAgICAgICJldGFnIjogIk01UDZOSlhRTkFsR0ZaTWlwSFVJVHR6SnJsdyIsCiAgICAgICJpZCI6ICJVRXc1YUZjeGRWTTJTRlZtZEV4a1NFazJVa2x6WVdZdGFWaFViVEE1Y1c1RmNpNDBOelpDTUVSRE1qVkVOMFJGUlRoQiIsCiAgICAgICJzbmlwcGV0IjogewogICAgICAgICJwdWJsaXNoZWRBdCI6ICIyMDIwLTA2LTAyVDEzOjQwOjIzWiIsCiAgICAgICAgImNoYW5uZWxJZCI6ICJVQ01EUXhtN2NVeDN5WGtmZUhhNXpKSVEiLAogICAgICAgICJ0aXRsZSI6ICLjgJDokZfkvZzmqKnkvrXlrrPjg6zjgqLjgrHjg7zjgrnjgJHmtbflpJbjgYvjgonjga7nlLPjgZfnq4vjgabvvIbomZrlgb3jga7loLHlkYoiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICLku4rlm57jga/okZfkvZzmqKnkvrXlrrPjgavplqLjgZnjgovosYbnn6XorZjjgpLntLnku4vjgZfjgb7jgZlcbuiRl+S9nOaoqeODleODquODvOOBrumfs+alveOCkuS9v+OBo+OBpuOBhOOBpua1t+WkluOBruiRl+S9nOaoqeipkOasuuWbo+S9k+OBi+OCieWgseWRiuOCkuWPl+OBkeOCi+OBk+OBqOOBjOOBguOCiuOBvuOBmeOBjOOAgeWun+OBr+ato+imj+OBrueuoeeQhuWbo+S9k+OBruOCseODvOOCueOCguOBguOCiuOBvuOBmeOBruOBp+azqOaEj+S4i+OBleOBhFxu44G+44Gf44CBWW91VHViZeOBp+OBruiRl+S9nOaoqeS+teWus+OBq+OBiuOBhOOBpuiZmuWBveOBruWgseWRiuOCkuihjOOBo+OBpuWgtOWQiOOBr+e9sOmHkeWIkeOBq+OBquOCi+WgtOWQiOOCguOBguOCi+OBruOBp+OAgeWgseWRiuODu+eUs+OBl+eri+OBpuOCkuOBmeOCi+WgtOWQiOOBr+OBjeOBoeOCk+OBqOeiuuiqjeOBl+OBvuOBl+OBn1xu44G+44Gf44CB44Gd44GG44GE44Gj44Gf44OI44Op44OW44Or44Gr5be744GN6L6844G+44KM44Gf5aC05ZCI44Gv5byB6K235aOr44Gq44Gp44Gu5bCC6ZaA5a6244Gr55u46KuH44GX44G+44GX44KH44GG77yBXG5cbuOAkOmWoumAo+WLleeUu+OAkVxuXG7jgJDop6PmsbrnrZbjgJHokZfkvZzmqKnkvrXlrrPjgafli5XnlLvjgYzliYrpmaTjgZXjgozjgb7jgZfjgZ/vvIHnlbDorbDnlLPnq4vjga7oqbPntLDjgpLop6PoqqzvvIFcbmh0dHBzOi8veW91dHUuYmUvbGF1MTRsaFpwb1Vcblxu44CQ5Y2x6Zm644CR6Z+z5qW944Gu6JGX5L2c5qip5L615a6z44Gn44Ki44Kr44Km44Oz44OI5YGc5q2i77yf5Y+O55uK5YyW54Sh5Yq577yf6JGX5L2c5qip44OV44Oq44O86Z+z5qW944Gr5r2c44KA572g44Go44GvXG5odHRwczovL3lvdXR1LmJlLzRBZzlWeTNnbHV3XG5cbuOAkOW8geitt+Wjq+OBq+iBnuOBj++9peiRl+S9nOaoqeOAkeiHquWIhuOBruWLleeUu+OBjOeEoeaWrei7oui8ieOBleOCjOOBn+OBqOOBjeOBruWvvuetluOAgOiRl+S9nOaoqeS+teWus+OBp+ijgeWIpO+8n1xuaHR0cHM6Ly95b3V0dS5iZS85WHpSTHhad3huRVxuXG5cbuOAkOODgeODo+ODl+OCv+ODvOOAkVxuMDowMCDpn7PmupDkvb/nlKjmmYLjga7okZfkvZzmqKnjg4jjg6njg5bjg6tcbjM6MjIg6JGX5L2c5qip5L615a6z44Gu6Jma5YG95aCx5ZGK44KS44GV44KM44KL44Kx44O844K5XG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ5YWs5byPTElOReOAkVxuaHR0cHM6Ly9wZXJhaWNoaS5jb20vbGFuZGluZ19wYWdlcy92aWV3L3Nha2FpbGluZVxu5YWo5Zu944Gn44GuWW91VHViZXLjgqrjg5XkvJrjg7vjg5Pjgrjjg43jgrnlkJHjgZHnm7joq4fkvJrjgarjganjgIHjg6zjg5njg6vjgqLjg4Pjg5fmg4XloLHjgpLlhYjooYzphY3kv6HjgZfjgabjgYTjgb7jgZlcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJDntYzllrbogIXlkJHjgZHjgqrjg7Pjg6njgqTjg7PjgrXjg63jg7PjgJFcbmh0dHBzOi8vY29tbXVuaXR5LmNhbXAtZmlyZS5qcC9wcm9qZWN0cy92aWV3LzI1MTY2Nlxu5YWo5Zu944Gu5aSa5b2p44Gq5qWt56iu44Gu44OT44K444ON44K5WW91VHViZXLjgYzlj4LliqDjgILphZLkupXjga7jg47jgqbjg4/jgqbjg7vlrp/ot7Xjg4fjg7zjgr/jga/jgZPjgZPjgavlhbHmnInjgZfjgabjgYTjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkFNOU+OAkVxuRmFjZWJvb2tcbmh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS95b3NoaXRhZGEuc2FrYWlcblxuVHdpdHRlclxuaHR0cHM6Ly90d2l0dGVyLmNvbS95b3NoaXRhZGFzYWthaVxuXG7msJfou73jgavjg5Xjgqnjg63jg7zjgY/jgaDjgZXjgYTjgIDigLtGQuOBr+S4gOiogOODoeODg+OCu+ODvOOCuOOBhOOBn+OBoOOBkeOCi+OBqOWKqeOBi+OCiuOBvuOBmVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKWvOOCs+ODgeODqeOCguOBnOOBsuOBlOimp+OBj+OBoOOBleOBhOKWvFxuXG7ikaBZb3VUdWJl77yG5YuV55S744Gu5Yid5b+D6ICF44Gr6KaL44Gm44G744GX44GE44Kq44K544K544Oh5YuV55S7XG7ikaHli5XnlLvjgafkvb/nlKjjgZfjgabjgYTjgovmkq7lvbHlmajmnZBcbuKRouaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOmFkuS6leelpeato1xu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoCBZb3VUdWJl5Yid5b+D6ICF44Gr44Kq44K544K544Oh5YuV55S744G+44Go44KB44G+44GX44Gf77yBXG5cbuOAkEx2LjHjgJExMOacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9xVklMS2EtaHhvLS1tWEZ5bVVITW5VXG5cbuOAkEx2LjLjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BvS2hMNnk4Q19WWkVRR2NySEUzMVJcblxu44CQTHYuM+OAkTbmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcnZFWnRjM0hWV0JBSHQ4SFpybHRzZlxuXG7jgJAxMDDkurrli5XnlLvjgqLjg4njg5DjgqTjgrnjgJFcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcGtGbXN0VnFPUVM5U2ZnRjViTV9ENlxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoemFkuS6leOBruS9v+eUqOWZqOadkO+8iOOCouODnuOCvuODs+OCouOCveOCt+OCqOOCpOODiOODl+ODreOCsOODqeODoOOCkuWIqeeUqO+8iVxuXG7jgJDjgqvjg6Hjg6njgJFQYW5hc29uaWMgR0g1XG5odHRwczovL2Ftem4udG8vMzRORjdpR1xuXG7jgJDmiYvpoIPjg6zjg7PjgrrjgJEgU1VNTUlMVVggMTVtbS9GMS43XG5odHRwczovL2Ftem4udG8vMlU3bGR3UFxuXG7jgJDph43lrp3jg6zjg7PjgrrjgJFTVU1NSUxVWCAxMm1tL0YxLjRcbmh0dHBzOi8vYW16bi50by8yd1d2elc0XG5cbuOAkOOCs+ODs+ODh+OCuOOAkVBhbmFzb25pYyBETUMtTFg5LUtcbmh0dHA6Ly9hbXpuLnRvLzJGN1ViT25cbuKAu+OCueODnuODm+OBi+OCieOCueODhuODg+ODl+OCouODg+ODl+OBq+S+oeagvOODu+aAp+iDveODu+eUu+izqlxuXG7jgJDkuInohJrjgJFNYW5mcm90dG8g5LiJ6ISa44Ki44Or44OfNeautSDjg5bjg6njg4Pjgq9cbmh0dHA6Ly9hbXpuLnRvLzJGSk94UERcblxu44CQ54Wn5piO44CRWW9uZ251byBMRUTjg6njgqTjg4ggNjAw55CD44GuTEVE44KS5pCt6LyJXG5odHRwOi8vYW16bi50by8ySFZpdzdRXG5cbuOAkOWls+aAp+WQkeOBkeODqeOCpOODiOOAkeODquODs+OCsOODqeOCpOODiCBGT1NJVEFOIOWkluW+hDM2Y20vMTTjgqTjg7Pjg4Fcbmh0dHBzOi8vYW16bi50by8yVmxiRXRrXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7wg6YWS5LqV56Wl5q2jXG5cbuKYheODl+ODreODleOCo+ODvOODq1xuMTk4MOW5tOeUn+OBvuOCjOOAgOemj+S6leecjOWHuui6q+OAgDM55q2zXG7mmKDlg4/liLbkvZzmrbQgMTflubTjgIA4MOalreeorjEwMDAw5pys5Lul5LiK5Yi25L2cXG5cbjIw5q2z44GL44KJ5p2x5Lqs44KS5Lit5b+D44Gr44OV44Oq44O85pig5YOP44OH44Kj44Os44Kv44K/44O844Go44GX44Gm5rS75YuV44CCXG4yNuats+OBi+OCieOBr+emj+S6leecjOOBq+OBguOCi+OCseODvOODluODq+ODhuODrOODk+OBq+aJgOWxnuOAguOCq+ODoeODqeODnuODs+OAgeODquODneODvOOCv+ODvOOAgeiomOiAheOAgeaYoOWDj+e3qOmbhuOBquOBqeeVque1hOWItuS9nCDmpa3li5nlhajoiKzjgpLmi4XlvZPjgIJcbjM05q2z44GL44KJ44Gv5Lit5bCP5LyB5qWt44KS5a++6LGh44GrIFlvdVR1YmXlsILploAg5pig5YOP6KO95L2c44Gu44G744GL44CB5YuV55S744K744Of44OK44O844KE5LyB5qWt44GuWW91VHViZeODgeODo+ODs+ODjeODq+ani+evieOCkuOCteODneODvOODiOOAglxuXG7pm4blrqLli5XnlLvjgaXjgY/jgorjgavlv4XopoHjgaog5LyB55S744O75pKu5b2x44O757eo6ZuG44O755m65L+h44O75qmf5p2Q44O76Kmx44GX5pa544KS44OI44O844K/44Or44Gn5pWZ44GI44KJ44KM44KL5Zu95YaF5ZSv5LiA44Gu5pig5YOP44OH44Kj44Os44Kv44K/44O8XG4yMDE55bm0NeaciOOBi+OCieaXpeacrOOBpzPkurrnm67jga5Zb3VUdWJl5YWs5byP44OT44OH44Kq44Kz44Oz44OI44Oq44OT44Ol44O844K/44O844Go44GX44Gm5rS75YuV5LitXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xu4piF5LyB5qWt5ZCR44GR5YuV55S744Oe44O844Kx44OG44Kj44Oz44Kw5bCO5YWl55u46KuHXG5odHRwczovL2dvbGRlbi1tb25rZXkudHYvY29udGFjdC5odG1sXG7igLvkuovmpa3nm7joq4fku6XlpJbjga7llY/lkIjjgZvjgavjga/lr77lv5zjgYTjgZ/jgZfjgYvjga3jgb7jgZnjga7jgafjgZTkuobmib/jgY/jgaDjgZXjgYRcbuS4gOiIrOeahOOBquizquWVj+OBr1lvdVR1YmXjgavjgrPjg6Hjg7Pjg4jjgY/jgaDjgZXjgYRcblxuXG4j44G/44KT44Gq44GM5aSW5Ye644KS5b+Y44KM44KL44GP44KJ44GE6Imv44GE5YuV55S744KS5L2c44KN44GGIiwKICAgICAgICAidGh1bWJuYWlscyI6IHsKICAgICAgICAgICJkZWZhdWx0IjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvWElvR3EzOWFiTWsvZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiA5MAogICAgICAgICAgfSwKICAgICAgICAgICJtZWRpdW0iOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9YSW9HcTM5YWJNay9tcWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMzIwLAogICAgICAgICAgICAiaGVpZ2h0IjogMTgwCiAgICAgICAgICB9LAogICAgICAgICAgImhpZ2giOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9YSW9HcTM5YWJNay9ocWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNDgwLAogICAgICAgICAgICAiaGVpZ2h0IjogMzYwCiAgICAgICAgICB9LAogICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvWElvR3EzOWFiTWsvc2RkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDY0MCwKICAgICAgICAgICAgImhlaWdodCI6IDQ4MAogICAgICAgICAgfSwKICAgICAgICAgICJtYXhyZXMiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9YSW9HcTM5YWJNay9tYXhyZXNkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDEyODAsCiAgICAgICAgICAgICJoZWlnaHQiOiA3MjAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFubmVsVGl0bGUiOiAiVGVhbVlvdVR1YmUgW0hlbHBdIiwKICAgICAgICAicGxheWxpc3RJZCI6ICJQTDloVzF1UzZIVWZ0TGRISTZSSXNhZi1pWFRtMDlxbkVyIiwKICAgICAgICAicG9zaXRpb24iOiA0LAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICJYSW9HcTM5YWJNayIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInlvdXR1YmUjcGxheWxpc3RJdGVtIiwKICAgICAgImV0YWciOiAia3lMNXExS1BVSUZ1Vm9zOGNrRXpEYk1GTzU4IiwKICAgICAgImlkIjogIlVFdzVhRmN4ZFZNMlNGVm1kRXhrU0VrMlVrbHpZV1l0YVZoVWJUQTVjVzVGY2k1RU1FRXdSVVk1TTBSRFJUVTNOREpDIiwKICAgICAgInNuaXBwZXQiOiB7CiAgICAgICAgInB1Ymxpc2hlZEF0IjogIjIwMjAtMDYtMDJUMTM6NDA6NDBaIiwKICAgICAgICAiY2hhbm5lbElkIjogIlVDTURReG03Y1V4M3lYa2ZlSGE1ekpJUSIsCiAgICAgICAgInRpdGxlIjogIuOAkOWujOWFqOino+iqrOOAkeiRl+S9nOaoqeS+teWus+OBp+WLleeUu+OBjOW8t+WItuWJiumZpOOBleOCjOOBn+OCieW/heOBmuOChOOCi+OBueOBjeOBk+OBqO+8gSIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIuWFiOaXpeOAgVlvdVR1YmVy44GL44KJ44CM5YuV55S75YmK6Zmk44CN44Gu44Oh44O844Or44GM5bGK44GN44G+44GX44GfXG7jganjgYbjgoTjgok05bm05YmN44Gr44Ki44OD44OX44GX44Gf5a2Q5L6b44Gr57W15pys44KS6Kqt44G/6IGe44GL44Gb44Gm44GE44KL5YuV55S744GM6JGX5L2c5qip5L615a6z44Gr6Kmy5b2T44GX44Gf44KJ44GX44GP44CB57W15pys5Ye654mI56S+44GL44KJ44Gu55Sz44GX56uL44Gm44Gn5YuV55S744GM5YmK6Zmk44GV44KM44G+44GX44GfXG7ku4rlm57jga/okZfkvZzmqKnkvrXlrrPjgafli5XnlLvjgYzliYrpmaTjgZXjgozjgZ/loLTlkIjjga7op6PmsbrnrZbjgpLjgYrkvJ3jgYjjgZfjgb7jgZlcblxu44CQWW91VHViZeiRl+S9nOaoqeOCu+ODs+OCv+ODvOOAkVxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vaW50bC9qYS9hYm91dC9jb3B5cmlnaHQvI3N1cHBvcnQtYW5kLXRyb3VibGVzaG9vdGluZ1xuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ5YWs5byPTElOReOAkVxuaHR0cHM6Ly9wZXJhaWNoaS5jb20vbGFuZGluZ19wYWdlcy92aWV3L3Nha2FpbGluZVxu5YWo5Zu944Gn44GuWW91VHViZXLjgqrjg5XkvJrjg7vjg5Pjgrjjg43jgrnlkJHjgZHnm7joq4fkvJrjgarjganjgIHjg6zjg5njg6vjgqLjg4Pjg5fmg4XloLHjgpLlhYjooYzphY3kv6HjgZfjgabjgYTjgb7jgZlcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJDntYzllrbogIXlkJHjgZHjgqrjg7Pjg6njgqTjg7PjgrXjg63jg7PjgJFcbmh0dHBzOi8vY29tbXVuaXR5LmNhbXAtZmlyZS5qcC9wcm9qZWN0cy92aWV3LzI1MTY2Nlxu5YWo5Zu944Gu5aSa5b2p44Gq5qWt56iu44Gu44OT44K444ON44K5WW91VHViZXLjgYzlj4LliqDjgILphZLkupXjga7jg47jgqbjg4/jgqbjg7vlrp/ot7Xjg4fjg7zjgr/jga/jgZPjgZPjgavlhbHmnInjgZfjgabjgYTjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkFNOU+OAkVxuRmFjZWJvb2tcbmh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS95b3NoaXRhZGEuc2FrYWlcblxuVHdpdHRlclxuaHR0cHM6Ly90d2l0dGVyLmNvbS95b3NoaXRhZGFzYWthaVxuXG7msJfou73jgavjg5Xjgqnjg63jg7zjgY/jgaDjgZXjgYTjgIDigLtGQuOBr+S4gOiogOODoeODg+OCu+ODvOOCuOOBhOOBn+OBoOOBkeOCi+OBqOWKqeOBi+OCiuOBvuOBmVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKWvOOCs+ODgeODqeOCguOBnOOBsuOBlOimp+OBj+OBoOOBleOBhOKWvFxuXG7ikaBZb3VUdWJl77yG5YuV55S744Gu5Yid5b+D6ICF44Gr6KaL44Gm44G744GX44GE44Kq44K544K544Oh5YuV55S7XG7ikaHli5XnlLvjgafkvb/nlKjjgZfjgabjgYTjgovmkq7lvbHlmajmnZBcbuKRouaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOmFkuS6leelpeato1xu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoCBZb3VUdWJl5Yid5b+D6ICF44Gr44Kq44K544K544Oh5YuV55S744G+44Go44KB44G+44GX44Gf77yBXG5cbuOAkEx2LjHjgJExMOacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9xVklMS2EtaHhvLS1tWEZ5bVVITW5VXG5cbuOAkEx2LjLjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BvS2hMNnk4Q19WWkVRR2NySEUzMVJcblxu44CQTHYuM+OAkTbmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcnZFWnRjM0hWV0JBSHQ4SFpybHRzZlxuXG7jgJAxMDDkurrli5XnlLvjgqLjg4njg5DjgqTjgrnjgJFcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcGtGbXN0VnFPUVM5U2ZnRjViTV9ENlxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoemFkuS6leOBruS9v+eUqOWZqOadkO+8iOOCouODnuOCvuODs+OCouOCveOCt+OCqOOCpOODiOODl+ODreOCsOODqeODoOOCkuWIqeeUqO+8iVxuXG7jgJDjgqvjg6Hjg6njgJFQYW5hc29uaWMgR0g1XG5odHRwczovL2Ftem4udG8vMzRORjdpR1xuXG7jgJDmiYvpoIPjg6zjg7PjgrrjgJEgU1VNTUlMVVggMTVtbS9GMS43XG5odHRwczovL2Ftem4udG8vMlU3bGR3UFxuXG7jgJDph43lrp3jg6zjg7PjgrrjgJFTVU1NSUxVWCAxMm1tL0YxLjRcbmh0dHBzOi8vYW16bi50by8yd1d2elc0XG5cbuOAkOOCs+ODs+ODh+OCuOOAkVBhbmFzb25pYyBETUMtTFg5LUtcbmh0dHA6Ly9hbXpuLnRvLzJGN1ViT25cbuKAu+OCueODnuODm+OBi+OCieOCueODhuODg+ODl+OCouODg+ODl+OBq+S+oeagvOODu+aAp+iDveODu+eUu+izqlxuXG7jgJDkuInohJrjgJFNYW5mcm90dG8g5LiJ6ISa44Ki44Or44OfNeautSDjg5bjg6njg4Pjgq9cbmh0dHA6Ly9hbXpuLnRvLzJGSk94UERcblxu44CQ54Wn5piO44CRWW9uZ251byBMRUTjg6njgqTjg4ggNjAw55CD44GuTEVE44KS5pCt6LyJXG5odHRwOi8vYW16bi50by8ySFZpdzdRXG5cbuOAkOWls+aAp+WQkeOBkeODqeOCpOODiOOAkeODquODs+OCsOODqeOCpOODiCBGT1NJVEFOIOWkluW+hDM2Y20vMTTjgqTjg7Pjg4Fcbmh0dHBzOi8vYW16bi50by8yVmxiRXRrXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7wg6YWS5LqV56Wl5q2jXG5cbuKYheODl+ODreODleOCo+ODvOODq1xuMTk4MOW5tOeUn+OBvuOCjOOAgOemj+S6leecjOWHuui6q+OAgDM55q2zXG7mmKDlg4/liLbkvZzmrbQgMTflubTjgIA4MOalreeorjEwMDAw5pys5Lul5LiK5Yi25L2cXG5cbjIw5q2z44GL44KJ5p2x5Lqs44KS5Lit5b+D44Gr44OV44Oq44O85pig5YOP44OH44Kj44Os44Kv44K/44O844Go44GX44Gm5rS75YuV44CCXG4yNuats+OBi+OCieOBr+emj+S6leecjOOBq+OBguOCi+OCseODvOODluODq+ODhuODrOODk+OBq+aJgOWxnuOAguOCq+ODoeODqeODnuODs+OAgeODquODneODvOOCv+ODvOOAgeiomOiAheOAgeaYoOWDj+e3qOmbhuOBquOBqeeVque1hOWItuS9nCDmpa3li5nlhajoiKzjgpLmi4XlvZPjgIJcbjM05q2z44GL44KJ44Gv5Lit5bCP5LyB5qWt44KS5a++6LGh44GrIFlvdVR1YmXlsILploAg5pig5YOP6KO95L2c44Gu44G744GL44CB5YuV55S744K744Of44OK44O844KE5LyB5qWt44GuWW91VHViZeODgeODo+ODs+ODjeODq+ani+evieOCkuOCteODneODvOODiOOAglxuXG7pm4blrqLli5XnlLvjgaXjgY/jgorjgavlv4XopoHjgaog5LyB55S744O75pKu5b2x44O757eo6ZuG44O755m65L+h44O75qmf5p2Q44O76Kmx44GX5pa544KS44OI44O844K/44Or44Gn5pWZ44GI44KJ44KM44KL5Zu95YaF5ZSv5LiA44Gu5pig5YOP44OH44Kj44Os44Kv44K/44O8XG4yMDE55bm0NeaciOOBi+OCieaXpeacrOOBpzPkurrnm67jga5Zb3VUdWJl5YWs5byP44OT44OH44Kq44Kz44Oz44OI44Oq44OT44Ol44O844K/44O844Go44GX44Gm5rS75YuV5LitXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xu4piF5LyB5qWt5ZCR44GR5YuV55S744Oe44O844Kx44OG44Kj44Oz44Kw5bCO5YWl55u46KuHXG5odHRwczovL2dvbGRlbi1tb25rZXkudHYvY29udGFjdC5odG1sXG7igLvkuovmpa3nm7joq4fku6XlpJbjga7llY/lkIjjgZvjgavjga/lr77lv5zjgYTjgZ/jgZfjgYvjga3jgb7jgZnjga7jgafjgZTkuobmib/jgY/jgaDjgZXjgYRcbuS4gOiIrOeahOOBquizquWVj+OBr1lvdVR1YmXjgavjgrPjg6Hjg7Pjg4jjgY/jgaDjgZXjgYRcblxuXG4j44G/44KT44Gq44GM5aSW5Ye644KS5b+Y44KM44KL44GP44KJ44GE6Imv44GE5YuV55S744KS5L2c44KN44GGIiwKICAgICAgICAidGh1bWJuYWlscyI6IHsKICAgICAgICAgICJkZWZhdWx0IjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvbGF1MTRsaFpwb1UvZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiA5MAogICAgICAgICAgfSwKICAgICAgICAgICJtZWRpdW0iOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sYXUxNGxoWnBvVS9tcWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMzIwLAogICAgICAgICAgICAiaGVpZ2h0IjogMTgwCiAgICAgICAgICB9LAogICAgICAgICAgImhpZ2giOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sYXUxNGxoWnBvVS9ocWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNDgwLAogICAgICAgICAgICAiaGVpZ2h0IjogMzYwCiAgICAgICAgICB9LAogICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvbGF1MTRsaFpwb1Uvc2RkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDY0MCwKICAgICAgICAgICAgImhlaWdodCI6IDQ4MAogICAgICAgICAgfSwKICAgICAgICAgICJtYXhyZXMiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sYXUxNGxoWnBvVS9tYXhyZXNkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDEyODAsCiAgICAgICAgICAgICJoZWlnaHQiOiA3MjAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFubmVsVGl0bGUiOiAiVGVhbVlvdVR1YmUgW0hlbHBdIiwKICAgICAgICAicGxheWxpc3RJZCI6ICJQTDloVzF1UzZIVWZ0TGRISTZSSXNhZi1pWFRtMDlxbkVyIiwKICAgICAgICAicG9zaXRpb24iOiA1LAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICJsYXUxNGxoWnBvVSIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInlvdXR1YmUjcGxheWxpc3RJdGVtIiwKICAgICAgImV0YWciOiAiSkQ2N25vWmtwZ01Lck9QaVdPbjl1SjRUUnIwIiwKICAgICAgImlkIjogIlVFdzVhRmN4ZFZNMlNGVm1kRXhrU0VrMlVrbHpZV1l0YVZoVWJUQTVjVzVGY2k0NU9EUkROVGcwUWpBNE5rRkJOa1F5IiwKICAgICAgInNuaXBwZXQiOiB7CiAgICAgICAgInB1Ymxpc2hlZEF0IjogIjIwMjAtMDYtMDJUMTM6NDI6NThaIiwKICAgICAgICAiY2hhbm5lbElkIjogIlVDTURReG03Y1V4M3lYa2ZlSGE1ekpJUSIsCiAgICAgICAgInRpdGxlIjogIllvdVR1YmXjgqzjgqTjg4njg6njgqTjg7Plr6nmn7vkvZPliLbjgYzlpInmm7TvvIHoqqRCQU7jgZXjgozjgZ/jgonnlbDorbDnlLPjgZfnq4vjgabjgpLjgZfjgojjgYYiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICLjgrPjg63jg4rjgqbjgqPjg6vjgrnjga7mhJ/mn5Pmi6HlpKfjgpLpmLLjgZDjgZ/jgoHjgIFZb3VUdWJl44Gn44KC5b6T5qWt5ZOh44Gu6Kq/5pW044KS6KGM44GE44G+44GX44GfXG7jgZ3jga7lvbHpn7/jgafjgZPjgozjgb7jgadBSeOBqOS6uumWk+OBp+ihjOOBo+OBpuOBhOOBn+OCrOOCpOODieODqeOCpOODs+Wvqeafu+OBq+OBiuOBhOOBpuOAgUFJ44Gu5L2c5qWt6YeP44KS5aKX44KE44GX44G+44GX44GfXG7jgZPjgozjgavjgojjgorjg53jg6rjgrfjg7zpgZXlj43jgZfjgabjgYTjgarjgYTli5XnlLvjgafjgoLliYrpmaTjgZXjgozjgovjgrHjg7zjgrnjgYzlopfliqDjgZnjgovlj6/og73mgKfjgYzjgYLjgorjgb7jgZlcbuOCguOBl+iqpOOBo+OBpuWJiumZpOOBleOCjOOBn+WgtOWQiOOBr+eVsOitsOeUs+OBl+eri+OBpuOCkuihjOOBo+OBpuOBj+OBoOOBleOBhFxu5Lq66ZaT44Gr44KI44KL44OB44Kn44OD44Kv44GM6KGM44KP44KM44G+44GZ77yI5Lq65ZOh6Kq/5pW05Lit44Gu44Gf44KB44OB44Kn44OD44Kv44GM6YGF44KM44KL5aC05ZCI44GM44GC44KK44G+44GZ77yJXG5cbuOAkOaXpeacrOiqnuOAkVlvdVR1YmXlhazlvI/jg5bjg63jgrBcbmh0dHBzOi8veW91dHViZS1qcC5nb29nbGVibG9nLmNvbS8yMDIwLzAzL3lvdXR1YmUuaHRtbFxuXG7jgJDoi7Hoqp7jgJFZb3VUdWJl5YWs5byP44OW44Ot44KwXG5odHRwczovL3lvdXR1YmUtY3JlYXRvcnMuZ29vZ2xlYmxvZy5jb20vMjAyMC8wMy9wcm90ZWN0aW5nLW91ci1leHRlbmRlZC13b3JrZm9yY2UtYW5kLmh0bWxcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkOWFrOW8j0xJTkXjgJFcbmh0dHBzOi8vcGVyYWljaGkuY29tL2xhbmRpbmdfcGFnZXMvdmlldy9zYWthaWxpbmVcbuWFqOWbveOBp+OBrllvdVR1YmVy44Kq44OV5Lya44O744OT44K444ON44K55ZCR44GR55u46KuH5Lya44Gq44Gp44CB44Os44OZ44Or44Ki44OD44OX5oOF5aCx44KS5YWI6KGM6YWN5L+h44GX44Gm44GE44G+44GZXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ57WM5Za26ICF5ZCR44GR44Kq44Oz44Op44Kk44Oz44K144Ot44Oz44CRXG5odHRwczovL2NvbW11bml0eS5jYW1wLWZpcmUuanAvcHJvamVjdHMvdmlldy8yNTE2NjZcbuWFqOWbveOBruWkmuW9qeOBqualreeoruOBruODk+OCuOODjeOCuVlvdVR1YmVy44GM5Y+C5Yqg44CC6YWS5LqV44Gu44OO44Km44OP44Km44O75a6f6Le144OH44O844K/44Gv44GT44GT44Gr5YWx5pyJ44GX44Gm44GE44G+44GZXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJBTTlPjgJFcbkZhY2Vib29rXG5odHRwczovL3d3dy5mYWNlYm9vay5jb20veW9zaGl0YWRhLnNha2FpXG5cblR3aXR0ZXJcbmh0dHBzOi8vdHdpdHRlci5jb20veW9zaGl0YWRhc2FrYWlcblxu5rCX6Lu944Gr44OV44Kp44Ot44O844GP44Gg44GV44GE44CA4oC7RkLjga/kuIDoqIDjg6Hjg4Pjgrvjg7zjgrjjgYTjgZ/jgaDjgZHjgovjgajliqnjgYvjgorjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG7ilrzjgrPjg4Hjg6njgoLjgZzjgbLjgZTopqfjgY/jgaDjgZXjgYTilrxcblxu4pGgWW91VHViZe+8huWLleeUu+OBruWIneW/g+iAheOBq+imi+OBpuOBu+OBl+OBhOOCquOCueOCueODoeWLleeUu1xu4pGh5YuV55S744Gn5L2/55So44GX44Gm44GE44KL5pKu5b2x5Zmo5p2QXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7zphZLkupXnpaXmraNcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaAgWW91VHViZeWIneW/g+iAheOBq+OCquOCueOCueODoeWLleeUu+OBvuOBqOOCgeOBvuOBl+OBn++8gVxuXG7jgJBMdi4x44CRMTDmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcVZJTEthLWh4by0tbVhGeW1VSE1uVVxuXG7jgJBMdi4y44CRNuacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9wb0toTDZ5OENfVlpFUUdjckhFMzFSXG5cbuOAkEx2LjPjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3J2RVp0YzNIVldCQUh0OEhacmx0c2Zcblxu44CQMTAw5Lq65YuV55S744Ki44OJ44OQ44Kk44K544CRXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BrRm1zdFZxT1FTOVNmZ0Y1Yk1fRDZcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaHphZLkupXjga7kvb/nlKjlmajmnZDvvIjjgqLjg57jgr7jg7PjgqLjgr3jgrfjgqjjgqTjg4jjg5fjg63jgrDjg6njg6DjgpLliKnnlKjvvIlcblxu44CQ44Kr44Oh44Op44CRUGFuYXNvbmljIEdINVxuaHR0cHM6Ly9hbXpuLnRvLzM0TkY3aUdcblxu44CQ5omL6aCD44Os44Oz44K644CRIFNVTU1JTFVYIDE1bW0vRjEuN1xuaHR0cHM6Ly9hbXpuLnRvLzJVN2xkd1Bcblxu44CQ6YeN5a6d44Os44Oz44K644CRU1VNTUlMVVggMTJtbS9GMS40XG5odHRwczovL2Ftem4udG8vMndXdnpXNFxuXG7jgJDjgrPjg7Pjg4fjgrjjgJFQYW5hc29uaWMgRE1DLUxYOS1LXG5odHRwOi8vYW16bi50by8yRjdVYk9uXG7igLvjgrnjg57jg5vjgYvjgonjgrnjg4bjg4Pjg5fjgqLjg4Pjg5fjgavkvqHmoLzjg7vmgKfog73jg7vnlLvos6pcblxu44CQ5LiJ6ISa44CRTWFuZnJvdHRvIOS4ieiEmuOCouODq+ODnzXmrrUg44OW44Op44OD44KvXG5odHRwOi8vYW16bi50by8yRkpPeFBEXG5cbuOAkOeFp+aYjuOAkVlvbmdudW8gTEVE44Op44Kk44OIIDYwMOeQg+OBrkxFROOCkuaQrei8iVxuaHR0cDovL2Ftem4udG8vMkhWaXc3UVxuXG7jgJDlpbPmgKflkJHjgZHjg6njgqTjg4jjgJHjg6rjg7PjgrDjg6njgqTjg4ggRk9TSVRBTiDlpJblvoQzNmNtLzE044Kk44Oz44OBXG5odHRwczovL2Ftem4udG8vMlZsYkV0a1xuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGi5pig5YOP44OH44Kj44Os44Kv44K/44O8IOmFkuS6leelpeato1xuXG7imIXjg5fjg63jg5XjgqPjg7zjg6tcbjE5ODDlubTnlJ/jgb7jgozjgIDnpo/kupXnnIzlh7rouqvjgIAzOeats1xu5pig5YOP5Yi25L2c5q20IDE35bm044CAODDmpa3nqK4xMDAwMOacrOS7peS4iuWItuS9nFxuXG4yMOats+OBi+OCieadseS6rOOCkuS4reW/g+OBq+ODleODquODvOaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOOBqOOBl+OBpua0u+WLleOAglxuMjbmrbPjgYvjgonjga/npo/kupXnnIzjgavjgYLjgovjgrHjg7zjg5bjg6vjg4bjg6zjg5PjgavmiYDlsZ7jgILjgqvjg6Hjg6njg57jg7PjgIHjg6rjg53jg7zjgr/jg7zjgIHoqJjogIXjgIHmmKDlg4/nt6jpm4bjgarjgannlarntYTliLbkvZwg5qWt5YuZ5YWo6Iis44KS5ouF5b2T44CCXG4zNOats+OBi+OCieOBr+S4reWwj+S8gealreOCkuWvvuixoeOBqyBZb3VUdWJl5bCC6ZaAIOaYoOWDj+ijveS9nOOBruOBu+OBi+OAgeWLleeUu+OCu+ODn+ODiuODvOOChOS8gealreOBrllvdVR1YmXjg4Hjg6Pjg7Pjg43jg6vmp4vnr4njgpLjgrXjg53jg7zjg4jjgIJcblxu6ZuG5a6i5YuV55S744Gl44GP44KK44Gr5b+F6KaB44GqIOS8geeUu+ODu+aSruW9seODu+e3qOmbhuODu+eZuuS/oeODu+apn+adkOODu+ipseOBl+aWueOCkuODiOODvOOCv+ODq+OBp+aVmeOBiOOCieOCjOOCi+WbveWGheWUr+S4gOOBruaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvFxuMjAxOeW5tDXmnIjjgYvjgonml6XmnKzjgacz5Lq655uu44GuWW91VHViZeWFrOW8j+ODk+ODh+OCquOCs+ODs+ODiOODquODk+ODpeODvOOCv+ODvOOBqOOBl+OBpua0u+WLleS4rVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKYheS8gealreWQkeOBkeWLleeUu+ODnuODvOOCseODhuOCo+ODs+OCsOWwjuWFpeebuOirh1xuaHR0cHM6Ly9nb2xkZW4tbW9ua2V5LnR2L2NvbnRhY3QuaHRtbFxu4oC75LqL5qWt55u46KuH5Lul5aSW44Gu5ZWP5ZCI44Gb44Gr44Gv5a++5b+c44GE44Gf44GX44GL44Gt44G+44GZ44Gu44Gn44GU5LqG5om/44GP44Gg44GV44GEXG7kuIDoiKznmoTjgaros6rllY/jga9Zb3VUdWJl44Gr44Kz44Oh44Oz44OI44GP44Gg44GV44GEXG5cblxuI+OBv+OCk+OBquOBjOWkluWHuuOCkuW/mOOCjOOCi+OBj+OCieOBhOiJr+OBhOWLleeUu+OCkuS9nOOCjeOBhiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0FzcVRBa0xLYjRNL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvQXNxVEFrTEtiNE0vbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvQXNxVEFrTEtiNE0vaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0FzcVRBa0xLYjRNL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4cmVzIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvQXNxVEFrTEtiNE0vbWF4cmVzZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjgwLAogICAgICAgICAgICAiaGVpZ2h0IjogNzIwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhbm5lbFRpdGxlIjogIlRlYW1Zb3VUdWJlIFtIZWxwXSIsCiAgICAgICAgInBsYXlsaXN0SWQiOiAiUEw5aFcxdVM2SFVmdExkSEk2UklzYWYtaVhUbTA5cW5FciIsCiAgICAgICAgInBvc2l0aW9uIjogNiwKICAgICAgICAicmVzb3VyY2VJZCI6IHsKICAgICAgICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgICAgICAgInZpZGVvSWQiOiAiQXNxVEFrTEtiNE0iCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ5b3V0dWJlI3BsYXlsaXN0SXRlbSIsCiAgICAgICJldGFnIjogIjdhVElvcHY2RlBuQXh1d3F4cW9KV0NwSTRDbyIsCiAgICAgICJpZCI6ICJVRXc1YUZjeGRWTTJTRlZtZEV4a1NFazJVa2x6WVdZdGFWaFViVEE1Y1c1RmNpNHpNRGc1TWtRNU1FVkRNRU0xTlRnMiIsCiAgICAgICJzbmlwcGV0IjogewogICAgICAgICJwdWJsaXNoZWRBdCI6ICIyMDIwLTA2LTAyVDEzOjQzOjA3WiIsCiAgICAgICAgImNoYW5uZWxJZCI6ICJVQ01EUXhtN2NVeDN5WGtmZUhhNXpKSVEiLAogICAgICAgICJ0aXRsZSI6ICLliJ3lv4PogIVZb3VUdWJlcuOChOOCiuOBjOOBoeimj+e0hOmBleWPjeOAkOebuOS6kueZu+mMsuODu+ODl+ODrOOCvOODs+ODiOS8geeUu+ODu+OBguOBhOOBleOBpOWRqOOCiuOAkSIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIuS7iuWbnuOBr+WIneW/g+iAhVlvdVR1YmVy44GM44KE44KK44GM44Gh44Gq6KaP57SE6YGV5Y+N44KS77yT44Gk57S55LuL44GX44G+44GZXG7jg7vjg4Hjg6Pjg7Pjg43jg6vnm7jkupLnmbvpjLLvvIhzdWI0c3Vi77yJXG7jg7vjg5fjg6zjgrzjg7Pjg4jkvIHnlLvvvIjlv5zli5/mnaHku7bjgavjg4Hjg6Pjg7Pjg43jg6vnmbvpjLLjg7voqZXkvqHjg7vjgrPjg6Hjg7Pjg4jjgYzlkKvjgb7jgozjgabjgYTjgovjgoLjga5cbuODu+OBguOBhOOBleOBpOWRqOOCiu+8iOOCs+ODoeODs+ODiOOCueODkeODoOOBqOWIpOaWreOBleOCjOOCi+WgtOWQiO+8iVxuXG7jganjgozjgoLmsJfou73jgavjgoTjgaPjgabjgZfjgb7jgYTjgZ3jgYbjgarooYzngrrjgafjgZnjgYzjgIFZb3VUdWJl44Gn44Gv44CM44K544OR44Og44CB5qy6556e6KGM54K644CB6KmQ5qy644CN44Gr44GC44Gf44KL44Go44GX44Gm5oKq6LOq44Gq44Om44O844K244O844Gr44Gv44Oa44OK44Or44OG44Kj44GM6Kqy44Gb44KJ44KM44G+44GZXG7jgZPjga7jg5rjg7zjgrjjga7jgqTjg7Pjgrvjg7Pjg4bjgqPjg5bjgrnjg5Hjg6Djg7vjgrPjg6Hjg7Pjg4jjgrnjg5Hjg6DjgavoqbLlvZPjgZfjgb7jgZlcbmh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3lvdXR1YmUvYW5zd2VyLzI4MDE5NzM/aGw9amFcblxu44GT44Gu6KaP57SE44Gv5Y+O55uK5YyW44Gu5a+p5p+744KE44Ki44Kr44Km44Oz44OI5YGc5q2i44Gq44GpWW91VHViZXLjga7mtLvli5XjgavjgoLlvbHpn7/jgpLlj4rjgbzjgZnlj6/og73mgKfjgYzpq5jjgYTjgafjgZlcbuOBl+OBo+OBi+OCiuOBqOOCrOOCpOODieODqeOCpOODs+ODu+ODneODquOCt+ODvOOCkueiuuiqjeOBl+OBpuOBiuOBjeOBvuOBl+OCh+OBhlxuXG7jgJDjg4Hjg6Pjg5fjgr/jg7zjgJFcbjA6MDAg55u45LqS55m76Yyy44Gv44KC44GG44KE44KB44KI44GGXG40OjA1IOimj+e0hOmBleWPjeOBqOOBquOCi+ODl+ODrOOCvOODs+ODiOS8geeUu+OBruS+i1xuNTowNSDjgYLjgYTjgZXjgaTlkajjgorjga/opo/ntITpgZXlj43jgafjgYLjgorov7fmg5HooYzngrpcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkOWFrOW8j0xJTkXjgJFcbmh0dHBzOi8vcGVyYWljaGkuY29tL2xhbmRpbmdfcGFnZXMvdmlldy9zYWthaWxpbmVcbuWFqOWbveOBp+OBrllvdVR1YmVy44Kq44OV5Lya44O744OT44K444ON44K55ZCR44GR55u46KuH5Lya44Gq44Gp44CB44Os44OZ44Or44Ki44OD44OX5oOF5aCx44KS5YWI6KGM6YWN5L+h44GX44Gm44GE44G+44GZXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ57WM5Za26ICF5ZCR44GR44Kq44Oz44Op44Kk44Oz44K144Ot44Oz44CRXG5odHRwczovL2NvbW11bml0eS5jYW1wLWZpcmUuanAvcHJvamVjdHMvdmlldy8yNTE2NjZcbuWFqOWbveOBruWkmuW9qeOBqualreeoruOBruODk+OCuOODjeOCuVlvdVR1YmVy44GM5Y+C5Yqg44CC6YWS5LqV44Gu44OO44Km44OP44Km44O75a6f6Le144OH44O844K/44Gv44GT44GT44Gr5YWx5pyJ44GX44Gm44GE44G+44GZXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJBTTlPjgJFcbkZhY2Vib29rXG5odHRwczovL3d3dy5mYWNlYm9vay5jb20veW9zaGl0YWRhLnNha2FpXG5cblR3aXR0ZXJcbmh0dHBzOi8vdHdpdHRlci5jb20veW9zaGl0YWRhc2FrYWlcblxu5rCX6Lu944Gr44OV44Kp44Ot44O844GP44Gg44GV44GE44CA4oC7RkLjga/kuIDoqIDjg6Hjg4Pjgrvjg7zjgrjjgYTjgZ/jgaDjgZHjgovjgajliqnjgYvjgorjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG7ilrzjgrPjg4Hjg6njgoLjgZzjgbLjgZTopqfjgY/jgaDjgZXjgYTilrxcblxu4pGgWW91VHViZe+8huWLleeUu+OBruWIneW/g+iAheOBq+imi+OBpuOBu+OBl+OBhOOCquOCueOCueODoeWLleeUu1xu4pGh5YuV55S744Gn5L2/55So44GX44Gm44GE44KL5pKu5b2x5Zmo5p2QXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7zphZLkupXnpaXmraNcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaAgWW91VHViZeWIneW/g+iAheOBq+OCquOCueOCueODoeWLleeUu+OBvuOBqOOCgeOBvuOBl+OBn++8gVxuXG7jgJBMdi4x44CRMTDmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcVZJTEthLWh4by0tbVhGeW1VSE1uVVxuXG7jgJBMdi4y44CRNuacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9wb0toTDZ5OENfVlpFUUdjckhFMzFSXG5cbuOAkEx2LjPjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3J2RVp0YzNIVldCQUh0OEhacmx0c2Zcblxu44CQMTAw5Lq65YuV55S744Ki44OJ44OQ44Kk44K544CRXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BrRm1zdFZxT1FTOVNmZ0Y1Yk1fRDZcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaHphZLkupXjga7kvb/nlKjlmajmnZDvvIjjgqLjg57jgr7jg7PjgqLjgr3jgrfjgqjjgqTjg4jjg5fjg63jgrDjg6njg6DjgpLliKnnlKjvvIlcblxu44CQ44Kr44Oh44Op44CRUGFuYXNvbmljIEdINVxuaHR0cHM6Ly9hbXpuLnRvLzM0TkY3aUdcblxu44CQ5omL6aCD44Os44Oz44K644CRIFNVTU1JTFVYIDE1bW0vRjEuN1xuaHR0cHM6Ly9hbXpuLnRvLzJVN2xkd1Bcblxu44CQ6YeN5a6d44Os44Oz44K644CRU1VNTUlMVVggMTJtbS9GMS40XG5odHRwczovL2Ftem4udG8vMndXdnpXNFxuXG7jgJDjgrPjg7Pjg4fjgrjjgJFQYW5hc29uaWMgRE1DLUxYOS1LXG5odHRwOi8vYW16bi50by8yRjdVYk9uXG7igLvjgrnjg57jg5vjgYvjgonjgrnjg4bjg4Pjg5fjgqLjg4Pjg5fjgavkvqHmoLzjg7vmgKfog73jg7vnlLvos6pcblxu44CQ5LiJ6ISa44CRTWFuZnJvdHRvIOS4ieiEmuOCouODq+ODnzXmrrUg44OW44Op44OD44KvXG5odHRwOi8vYW16bi50by8yRkpPeFBEXG5cbuOAkOeFp+aYjuOAkVlvbmdudW8gTEVE44Op44Kk44OIIDYwMOeQg+OBrkxFROOCkuaQrei8iVxuaHR0cDovL2Ftem4udG8vMkhWaXc3UVxuXG7jgJDlpbPmgKflkJHjgZHjg6njgqTjg4jjgJHjg6rjg7PjgrDjg6njgqTjg4ggRk9TSVRBTiDlpJblvoQzNmNtLzE044Kk44Oz44OBXG5odHRwczovL2Ftem4udG8vMlZsYkV0a1xuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGi5pig5YOP44OH44Kj44Os44Kv44K/44O8IOmFkuS6leelpeato1xuXG7imIXjg5fjg63jg5XjgqPjg7zjg6tcbjE5ODDlubTnlJ/jgb7jgozjgIDnpo/kupXnnIzlh7rouqvjgIAzOeats1xu5pig5YOP5Yi25L2c5q20IDE35bm044CAODDmpa3nqK4xMDAwMOacrOS7peS4iuWItuS9nFxuXG4yMOats+OBi+OCieadseS6rOOCkuS4reW/g+OBq+ODleODquODvOaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOOBqOOBl+OBpua0u+WLleOAglxuMjbmrbPjgYvjgonjga/npo/kupXnnIzjgavjgYLjgovjgrHjg7zjg5bjg6vjg4bjg6zjg5PjgavmiYDlsZ7jgILjgqvjg6Hjg6njg57jg7PjgIHjg6rjg53jg7zjgr/jg7zjgIHoqJjogIXjgIHmmKDlg4/nt6jpm4bjgarjgannlarntYTliLbkvZwg5qWt5YuZ5YWo6Iis44KS5ouF5b2T44CCXG4zNOats+OBi+OCieOBr+S4reWwj+S8gealreOCkuWvvuixoeOBqyBZb3VUdWJl5bCC6ZaAIOaYoOWDj+ijveS9nOOBruOBu+OBi+OAgeWLleeUu+OCu+ODn+ODiuODvOOChOS8gealreOBrllvdVR1YmXjg4Hjg6Pjg7Pjg43jg6vmp4vnr4njgpLjgrXjg53jg7zjg4jjgIJcblxu6ZuG5a6i5YuV55S744Gl44GP44KK44Gr5b+F6KaB44GqIOS8geeUu+ODu+aSruW9seODu+e3qOmbhuODu+eZuuS/oeODu+apn+adkOODu+ipseOBl+aWueOCkuODiOODvOOCv+ODq+OBp+aVmeOBiOOCieOCjOOCi+WbveWGheWUr+S4gOOBruaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvFxuMjAxOeW5tDXmnIjjgYvjgonml6XmnKzjgacz5Lq655uu44GuWW91VHViZeWFrOW8j+ODk+ODh+OCquOCs+ODs+ODiOODquODk+ODpeODvOOCv+ODvOOBqOOBl+OBpua0u+WLleS4rVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKYheS8gealreWQkeOBkeWLleeUu+ODnuODvOOCseODhuOCo+ODs+OCsOWwjuWFpeebuOirh1xuaHR0cHM6Ly9nb2xkZW4tbW9ua2V5LnR2L2NvbnRhY3QuaHRtbFxu4oC75LqL5qWt55u46KuH5Lul5aSW44Gu5ZWP5ZCI44Gb44Gr44Gv5a++5b+c44GE44Gf44GX44GL44Gt44G+44GZ44Gu44Gn44GU5LqG5om/44GP44Gg44GV44GEXG7kuIDoiKznmoTjgaros6rllY/jga9Zb3VUdWJl44Gr44Kz44Oh44Oz44OI44GP44Gg44GV44GEXG5cblxuI+OBv+OCk+OBquOBjOWkluWHuuOCkuW/mOOCjOOCi+OBj+OCieOBhOiJr+OBhOWLleeUu+OCkuS9nOOCjeOBhiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2VLa3YxQ19PLVFJL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZUtrdjFDX08tUUkvbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZUtrdjFDX08tUUkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2VLa3YxQ19PLVFJL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4cmVzIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZUtrdjFDX08tUUkvbWF4cmVzZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjgwLAogICAgICAgICAgICAiaGVpZ2h0IjogNzIwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhbm5lbFRpdGxlIjogIlRlYW1Zb3VUdWJlIFtIZWxwXSIsCiAgICAgICAgInBsYXlsaXN0SWQiOiAiUEw5aFcxdVM2SFVmdExkSEk2UklzYWYtaVhUbTA5cW5FciIsCiAgICAgICAgInBvc2l0aW9uIjogNywKICAgICAgICAicmVzb3VyY2VJZCI6IHsKICAgICAgICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgICAgICAgInZpZGVvSWQiOiAiZUtrdjFDX08tUUkiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ5b3V0dWJlI3BsYXlsaXN0SXRlbSIsCiAgICAgICJldGFnIjogImdxZEFuVU9VNkxERjMxZ3lBSDFnaXkyV0x0MCIsCiAgICAgICJpZCI6ICJVRXc1YUZjeGRWTTJTRlZtZEV4a1NFazJVa2x6WVdZdGFWaFViVEE1Y1c1RmNpNDFNemsyUVRBeE1Ua3pORGs0TURoRiIsCiAgICAgICJzbmlwcGV0IjogewogICAgICAgICJwdWJsaXNoZWRBdCI6ICIyMDIwLTA2LTAyVDEzOjQ0OjA4WiIsCiAgICAgICAgImNoYW5uZWxJZCI6ICJVQ01EUXhtN2NVeDN5WGtmZUhhNXpKSVEiLAogICAgICAgICJ0aXRsZSI6ICJZb3VUdWJl44GM56aB5q2i44GZ44KL5ZWG55So5Yip55So77yI6KaW6IG0VVJM44KS6LKp5aOy44O75pyJ5paZ44K744Of44OK44O844KS6ZmQ5a6a5YWs6ZaL77yJIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAi4oC744GT44Gu5YuV55S744GvMjAxOeW5tDTmnIjjgavmipXnqL/jgZfjgZ/li5XnlLvjgpLlho3nt6jpm4bjgZfjgZ/jgoLjga7jgafjgZlcblxu5LuK5Zue44GvWW91VHViZeOBjOemgeatouOBl+OBpuOBhOOCi++8kuOBpOOBruWVhueUqOWIqeeUqOOBq+OBpOOBhOOBpue0ueS7i+OBl+OBvuOBmVxu44CM44Ki44Kv44K744K55qip44Gu6LKp5aOy44CNXG7jg7vmnInmlpnkvJrlk6Hjgavjga7jgb/li5XnlLvjgpLphY3kv6FcbuODu+imluiBtFVSTOOCkuiyqeWjslxu44O744K744Of44OK44O844KS6ZmQ5a6a5YWs6ZaLXG7jg7vmnInmlpnjgqrjg7Pjg6njgqTjg7PjgrXjg63jg7PlhoXjgafjga7li5XnlLvlhazplotcblxu54m544GrWW91VHViZeOCkuODk+OCuOODjeOCueOBq+WIqeeUqOOBl+OBpuOBhOOCi+OCs+ODs+OCteODq+OCv+ODs+ODiOOAgeOCs+ODvOODgeOAgeOCu+ODqeODlOOCueODiOOAgeOCu+ODn+ODiuODvOism+W4q+OBruaWueOBr+OBpOOBhOOBpOOBhOOChOOBo+OBpuOBl+OBvuOBhOOBjOOBoeOBquOBruOBp+awl+OCkuOBpOOBkeOBpuOBj+OBoOOBleOBhO+8gVxuXG4yMDIw5bm0IOePvuWcqOOBr+ODgeOCp+ODg+OCr+OBjOWOs+OBl+OBj+OBguOCiuOBvuOBm+OCk+OBjOOAgeWkluWHuuOBjOimj+WItuOBleOCjOOBpuOBhOOCi+aYqOS7iuOBrueKtuazgeOBruS4reOAgeOCquODs+ODqeOCpOODs+OCteODvOODk+OCueOCkuOBr+OBmOOCgeOCi+e1jOWWtuiAheOCguWkmuOBhOOBqOaAneOBhOOBvuOBmVxu44Or44O844Or6YGV5Y+N6ICF44GM5aKX44GI44CBWW91VHViZeOBruWIqeeUqOeSsOWig+OBjOaCquOBj+OBquOCi+OBqOimj+e0hOOCguaUueato+OBleOCjOWPluOCiue3oOOBvuOCiuOBjOWni+OBvuOCi+OBk+OBqOOCguWNgeWIhuiAg+OBiOOCieOCjOOBvuOBmVxu44Gd44Gu5aC05ZCI44CB5YuV55S744Gu5YmK6Zmk44CB44OB44Oj44Oz44ON44Or44Gu5YGc5q2i44Gq44Gp5Y6z44GX44GE44Oa44OK44Or44OG44Kj44GM6Kqy44Gb44KJ44KM44KL44GL44KC44GX44KM44G+44Gb44KTXG5cbllvdVR1YmXjga7jg5Pjgrjjg43jgrnmtLvnlKjjgpLogIPjgYjjgabjgYTjgovmlrnjga/lv4XjgZrliKnnlKjopo/ntITjgavnm67jgpLpgJrjgZfjgabmraPjgZfjgY9Zb3VUdWJl44KS5Yip55So44GX44KH44GX44KH44GG77yBXG5cbllvdVR1YmXliKnnlKjopo/ntIRcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3N0YXRpYz90ZW1wbGF0ZT10ZXJtcyZobD1qYSZnbD1KUFxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ5YWs5byPTElOReOAkVxuaHR0cHM6Ly9wZXJhaWNoaS5jb20vbGFuZGluZ19wYWdlcy92aWV3L3Nha2FpbGluZVxu5YWo5Zu944Gn44GuWW91VHViZXLjgqrjg5XkvJrjg7vjg5Pjgrjjg43jgrnlkJHjgZHnm7joq4fkvJrjgarjganjgIHjg6zjg5njg6vjgqLjg4Pjg5fmg4XloLHjgpLlhYjooYzphY3kv6HjgZfjgabjgYTjgb7jgZlcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJDntYzllrbogIXlkJHjgZHjgqrjg7Pjg6njgqTjg7PjgrXjg63jg7PjgJFcbmh0dHBzOi8vY29tbXVuaXR5LmNhbXAtZmlyZS5qcC9wcm9qZWN0cy92aWV3LzI1MTY2Nlxu5YWo5Zu944Gu5aSa5b2p44Gq5qWt56iu44Gu44OT44K444ON44K5WW91VHViZXLjgYzlj4LliqDjgILphZLkupXjga7jg47jgqbjg4/jgqbjg7vlrp/ot7Xjg4fjg7zjgr/jga/jgZPjgZPjgavlhbHmnInjgZfjgabjgYTjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkFNOU+OAkVxuRmFjZWJvb2tcbmh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS95b3NoaXRhZGEuc2FrYWlcblxuVHdpdHRlclxuaHR0cHM6Ly90d2l0dGVyLmNvbS95b3NoaXRhZGFzYWthaVxuXG7msJfou73jgavjg5Xjgqnjg63jg7zjgY/jgaDjgZXjgYTjgIDigLtGQuOBr+S4gOiogOODoeODg+OCu+ODvOOCuOOBhOOBn+OBoOOBkeOCi+OBqOWKqeOBi+OCiuOBvuOBmVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cbuKWvOOCs+ODgeODqeOCguOBnOOBsuOBlOimp+OBj+OBoOOBleOBhOKWvFxuXG7ikaBZb3VUdWJl77yG5YuV55S744Gu5Yid5b+D6ICF44Gr6KaL44Gm44G744GX44GE44Kq44K544K544Oh5YuV55S7XG7ikaHli5XnlLvjgafkvb/nlKjjgZfjgabjgYTjgovmkq7lvbHlmajmnZBcbuKRouaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOmFkuS6leelpeato1xu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoCBZb3VUdWJl5Yid5b+D6ICF44Gr44Kq44K544K544Oh5YuV55S744G+44Go44KB44G+44GX44Gf77yBXG5cbuOAkEx2LjHjgJExMOacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9xVklMS2EtaHhvLS1tWEZ5bVVITW5VXG5cbuOAkEx2LjLjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BvS2hMNnk4Q19WWkVRR2NySEUzMVJcblxu44CQTHYuM+OAkTbmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcnZFWnRjM0hWV0JBSHQ4SFpybHRzZlxuXG7jgJAxMDDkurrli5XnlLvjgqLjg4njg5DjgqTjgrnjgJFcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcGtGbXN0VnFPUVM5U2ZnRjViTV9ENlxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRoemFkuS6leOBruS9v+eUqOWZqOadkO+8iOOCouODnuOCvuODs+OCouOCveOCt+OCqOOCpOODiOODl+ODreOCsOODqeODoOOCkuWIqeeUqO+8iVxuXG7jgJDjgqvjg6Hjg6njgJFQYW5hc29uaWMgR0g1XG5odHRwczovL2Ftem4udG8vMzRORjdpR1xuXG7jgJDmiYvpoIPjg6zjg7PjgrrjgJEgU1VNTUlMVVggMTVtbS9GMS43XG5odHRwczovL2Ftem4udG8vMlU3bGR3UFxuXG7jgJDph43lrp3jg6zjg7PjgrrjgJFTVU1NSUxVWCAxMm1tL0YxLjRcbmh0dHBzOi8vYW16bi50by8yd1d2elc0XG5cbuOAkOOCs+ODs+ODh+OCuOOAkVBhbmFzb25pYyBETUMtTFg5LUtcbmh0dHA6Ly9hbXpuLnRvLzJGN1ViT25cbuKAu+OCueODnuODm+OBi+OCieOCueODhuODg+ODl+OCouODg+ODl+OBq+S+oeagvOODu+aAp+iDveODu+eUu+izqlxuXG7jgJDkuInohJrjgJFNYW5mcm90dG8g5LiJ6ISa44Ki44Or44OfNeautSDjg5bjg6njg4Pjgq9cbmh0dHA6Ly9hbXpuLnRvLzJGSk94UERcblxu44CQ54Wn5piO44CRWW9uZ251byBMRUTjg6njgqTjg4ggNjAw55CD44GuTEVE44KS5pCt6LyJXG5odHRwOi8vYW16bi50by8ySFZpdzdRXG5cbuOAkOWls+aAp+WQkeOBkeODqeOCpOODiOOAkeODquODs+OCsOODqeOCpOODiCBGT1NJVEFOIOWkluW+hDM2Y20vMTTjgqTjg7Pjg4Fcbmh0dHBzOi8vYW16bi50by8yVmxiRXRrXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7wg6YWS5LqV56Wl5q2jXG5cbuKYheODl+ODreODleOCo+ODvOODq1xuMTk4MOW5tOeUn+OBvuOCjOOAgOemj+S6leecjOWHuui6q+OAgDM55q2zXG7mmKDlg4/liLbkvZzmrbQgMTflubTjgIA4MOalreeorjEwMDAw5pys5Lul5LiK5Yi25L2cXG5cbjIw5q2z44GL44KJ5p2x5Lqs44KS5Lit5b+D44Gr44OV44Oq44O85pig5YOP44OH44Kj44Os44Kv44K/44O844Go44GX44Gm5rS75YuV44CCXG4yNuats+OBi+OCieOBr+emj+S6leecjOOBq+OBguOCi+OCseODvOODluODq+ODhuODrOODk+OBq+aJgOWxnuOAguOCq+ODoeODqeODnuODs+OAgeODquODneODvOOCv+ODvOOAgeiomOiAheOAgeaYoOWDj+e3qOmbhuOBquOBqeeVque1hOWItuS9nCDmpa3li5nlhajoiKzjgpLmi4XlvZPjgIJcbjM05q2z44GL44KJ44Gv5Lit5bCP5LyB5qWt44KS5a++6LGh44GrIFlvdVR1YmXlsILploAg5pig5YOP6KO95L2c44Gu44G744GL44CB5YuV55S744K744Of44OK44O844KE5LyB5qWt44GuWW91VHViZeODgeODo+ODs+ODjeODq+ani+evieOCkuOCteODneODvOODiOOAglxuXG7pm4blrqLli5XnlLvjgaXjgY/jgorjgavlv4XopoHjgaog5LyB55S744O75pKu5b2x44O757eo6ZuG44O755m65L+h44O75qmf5p2Q44O76Kmx44GX5pa544KS44OI44O844K/44Or44Gn5pWZ44GI44KJ44KM44KL5Zu95YaF5ZSv5LiA44Gu5pig5YOP44OH44Kj44Os44Kv44K/44O8XG4yMDE55bm0NeaciOOBi+OCieaXpeacrOOBpzPkurrnm67jga5Zb3VUdWJl5YWs5byP44OT44OH44Kq44Kz44Oz44OI44Oq44OT44Ol44O844K/44O844Go44GX44Gm5rS75YuV5LitXG5cbuKYheS8gealreWQkeOBkeWLleeUu+ODnuODvOOCseODhuOCo+ODs+OCsOWwjuWFpeebuOirh1xuaHR0cHM6Ly9nb2xkZW4tbW9ua2V5LnR2L2NvbnRhY3QuaHRtbFxu4oC75LqL5qWt55u46KuH5Lul5aSW44Gu5ZWP5ZCI44Gb44Gr44Gv5a++5b+c44GE44Gf44GX44GL44Gt44G+44GZ44Gu44Gn44GU5LqG5om/44GP44Gg44GV44GEXG7kuIDoiKznmoTjgaros6rllY/jga9Zb3VUdWJl44Gr44Kz44Oh44Oz44OI44GP44Gg44GV44GEXG5cblxuI+OBv+OCk+OBquOBjOWkluWHuuOCkuW/mOOCjOOCi+OBj+OCieOBhOiJr+OBhOWLleeUu+OCkuS9nOOCjeOBhiIsCiAgICAgICAgInRodW1ibmFpbHMiOiB7CiAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0s2ODFJTFNYeVVZL2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTIwLAogICAgICAgICAgICAiaGVpZ2h0IjogOTAKICAgICAgICAgIH0sCiAgICAgICAgICAibWVkaXVtIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvSzY4MUlMU1h5VVkvbXFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgICAgICAgImhlaWdodCI6IDE4MAogICAgICAgICAgfSwKICAgICAgICAgICJoaWdoIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvSzY4MUlMU1h5VVkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgICAgICAgImhlaWdodCI6IDM2MAogICAgICAgICAgfSwKICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0s2ODFJTFNYeVVZL3NkZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA2NDAsCiAgICAgICAgICAgICJoZWlnaHQiOiA0ODAKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4cmVzIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvSzY4MUlMU1h5VVkvbWF4cmVzZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjgwLAogICAgICAgICAgICAiaGVpZ2h0IjogNzIwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhbm5lbFRpdGxlIjogIlRlYW1Zb3VUdWJlIFtIZWxwXSIsCiAgICAgICAgInBsYXlsaXN0SWQiOiAiUEw5aFcxdVM2SFVmdExkSEk2UklzYWYtaVhUbTA5cW5FciIsCiAgICAgICAgInBvc2l0aW9uIjogOCwKICAgICAgICAicmVzb3VyY2VJZCI6IHsKICAgICAgICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgICAgICAgInZpZGVvSWQiOiAiSzY4MUlMU1h5VVkiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ5b3V0dWJlI3BsYXlsaXN0SXRlbSIsCiAgICAgICJldGFnIjogInNULWtlU3F5Tzc1Ri1kSGVnVExmV2U1SXZXQSIsCiAgICAgICJpZCI6ICJVRXc1YUZjeGRWTTJTRlZtZEV4a1NFazJVa2x6WVdZdGFWaFViVEE1Y1c1RmNpNUVRVUUxTlRGRFJqY3dNRGcwTkVNeiIsCiAgICAgICJzbmlwcGV0IjogewogICAgICAgICJwdWJsaXNoZWRBdCI6ICIyMDIwLTA5LTE2VDExOjAxOjIyWiIsCiAgICAgICAgImNoYW5uZWxJZCI6ICJVQ01EUXhtN2NVeDN5WGtmZUhhNXpKSVEiLAogICAgICAgICJ0aXRsZSI6ICJZb3VUdWJlcijnp4Ep44GM6JGX5L2c5qip5L615a6z44Gr44Gq44KJ44Gq44GE44Gf44KB44Gr5rOo5oSP44GX44Gm44GE44KLMuOBpOOBruODneOCpOODs+ODiCIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJDlhazlvI9MSU5F44CRXG5odHRwczovL3BlcmFpY2hpLmNvbS9sYW5kaW5nX3BhZ2VzL3ZpZXcvc2FrYWlsaW5lXG7lhajlm73jgafjga5Zb3VUdWJlcuOCquODleS8muODu+ODk+OCuOODjeOCueWQkeOBkeebuOirh+S8muOBquOBqeOAgeODrOODmeODq+OCouODg+ODl+aDheWgseOCkuWFiOihjOmFjeS/oeOBl+OBpuOBhOOBvuOBmVxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkOe1jOWWtuiAheWQkeOBkeOCquODs+ODqeOCpOODs+OCteODreODs+OAkVxuaHR0cHM6Ly9jb21tdW5pdHkuY2FtcC1maXJlLmpwL3Byb2plY3RzL3ZpZXcvMjUxNjY2XG7lhajlm73jga7lpJrlvanjgarmpa3nqK7jga7jg5Pjgrjjg43jgrlZb3VUdWJlcuOBjOWPguWKoOOAgumFkuS6leOBruODjuOCpuODj+OCpuODu+Wun+i3teODh+ODvOOCv+OBr+OBk+OBk+OBq+WFseacieOBl+OBpuOBhOOBvuOBmVxuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQU05T44CRXG5GYWNlYm9va1xuaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3lvc2hpdGFkYS5zYWthaVxuXG5Ud2l0dGVyXG5odHRwczovL3R3aXR0ZXIuY29tL3lvc2hpdGFkYXNha2FpXG5cbuawl+i7veOBq+ODleOCqeODreODvOOBj+OBoOOBleOBhOOAgOKAu0ZC44Gv5LiA6KiA44Oh44OD44K744O844K444GE44Gf44Gg44GR44KL44Go5Yqp44GL44KK44G+44GZXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xu4pa844Kz44OB44Op44KC44Gc44Gy44GU6Kan44GP44Gg44GV44GE4pa8XG5cbuKRoFlvdVR1YmXvvIbli5XnlLvjga7liJ3lv4PogIXjgavopovjgabjgbvjgZfjgYTjgqrjgrnjgrnjg6Hli5XnlLtcbuKRoeWLleeUu+OBp+S9v+eUqOOBl+OBpuOBhOOCi+aSruW9seWZqOadkFxu4pGi5pig5YOP44OH44Kj44Os44Kv44K/44O86YWS5LqV56Wl5q2jXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGgIFlvdVR1YmXliJ3lv4PogIXjgavjgqrjgrnjgrnjg6Hli5XnlLvjgb7jgajjgoHjgb7jgZfjgZ/vvIFcblxu44CQTHYuMeOAkTEw5pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3FWSUxLYS1oeG8tLW1YRnltVUhNblVcblxu44CQTHYuMuOAkTbmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcG9LaEw2eThDX1ZaRVFHY3JIRTMxUlxuXG7jgJBMdi4z44CRNuacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9ydkVadGMzSFZXQkFIdDhIWnJsdHNmXG5cbuOAkDEwMOS6uuWLleeUu+OCouODieODkOOCpOOCueOAkVxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9wa0Ztc3RWcU9RUzlTZmdGNWJNX0Q2XG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGh6YWS5LqV44Gu5L2/55So5Zmo5p2Q77yI44Ki44Oe44K+44Oz44Ki44K944K344Ko44Kk44OI44OX44Ot44Kw44Op44Og44KS5Yip55So77yJXG5cbuOAkOOCq+ODoeODqeOAkVBhbmFzb25pYyBHSDVcbmh0dHBzOi8vYW16bi50by8zNE5GN2lHXG5cbuOAkOaJi+mgg+ODrOODs+OCuuOAkSBTVU1NSUxVWCAxNW1tL0YxLjdcbmh0dHBzOi8vYW16bi50by8yVTdsZHdQXG5cbuOAkOmHjeWuneODrOODs+OCuuOAkVNVTU1JTFVYIDEybW0vRjEuNFxuaHR0cHM6Ly9hbXpuLnRvLzJ3V3Z6VzRcblxu44CQ44Kz44Oz44OH44K444CRUGFuYXNvbmljIERNQy1MWDktS1xuaHR0cDovL2Ftem4udG8vMkY3VWJPblxu4oC744K544Oe44Ob44GL44KJ44K544OG44OD44OX44Ki44OD44OX44Gr5L6h5qC844O75oCn6IO944O755S76LOqXG5cbuOAkOS4ieiEmuOAkU1hbmZyb3R0byDkuInohJrjgqLjg6vjg5815q61IOODluODqeODg+OCr1xuaHR0cDovL2Ftem4udG8vMkZKT3hQRFxuXG7jgJDnhafmmI7jgJFZb25nbnVvIExFROODqeOCpOODiCA2MDDnkIPjga5MRUTjgpLmkK3ovIlcbmh0dHA6Ly9hbXpuLnRvLzJIVml3N1Fcblxu44CQ5aWz5oCn5ZCR44GR44Op44Kk44OI44CR44Oq44Oz44Kw44Op44Kk44OIIEZPU0lUQU4g5aSW5b6EMzZjbS8xNOOCpOODs+ODgVxuaHR0cHM6Ly9hbXpuLnRvLzJWbGJFdGtcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuKRouaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvCDphZLkupXnpaXmraNcblxu4piF44OX44Ot44OV44Kj44O844OrXG4xOTgw5bm055Sf44G+44KM44CA56aP5LqV55yM5Ye66Lqr44CAMznmrbNcbuaYoOWDj+WItuS9nOattCAxN+W5tOOAgDgw5qWt56iuMTAwMDDmnKzku6XkuIrliLbkvZxcblxuMjDmrbPjgYvjgonmnbHkuqzjgpLkuK3lv4Pjgavjg5Xjg6rjg7zmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7zjgajjgZfjgabmtLvli5XjgIJcbjI25q2z44GL44KJ44Gv56aP5LqV55yM44Gr44GC44KL44Kx44O844OW44Or44OG44Os44OT44Gr5omA5bGe44CC44Kr44Oh44Op44Oe44Oz44CB44Oq44Od44O844K/44O844CB6KiY6ICF44CB5pig5YOP57eo6ZuG44Gq44Gp55Wq57WE5Yi25L2cIOalreWLmeWFqOiIrOOCkuaLheW9k+OAglxuMzTmrbPjgYvjgonjga/kuK3lsI/kvIHmpa3jgpLlr77osaHjgasgWW91VHViZeWwgumWgCDmmKDlg4/oo73kvZzjga7jgbvjgYvjgIHli5XnlLvjgrvjg5/jg4rjg7zjgoTkvIHmpa3jga5Zb3VUdWJl44OB44Oj44Oz44ON44Or5qeL56+J44KS44K144Od44O844OI44CCXG5cbumbhuWuouWLleeUu+OBpeOBj+OCiuOBq+W/heimgeOBqiDkvIHnlLvjg7vmkq7lvbHjg7vnt6jpm4bjg7vnmbrkv6Hjg7vmqZ/mnZDjg7voqbHjgZfmlrnjgpLjg4jjg7zjgr/jg6vjgafmlZnjgYjjgonjgozjgovlm73lhoXllK/kuIDjga7mmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7xcbjIwMTnlubQ15pyI44GL44KJ5pel5pys44GnM+S6uuebruOBrllvdVR1YmXlhazlvI/jg5Pjg4fjgqrjgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjgr/jg7zjgajjgZfjgabmtLvli5XkuK1cblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG7imIXkvIHmpa3lkJHjgZHli5XnlLvjg57jg7zjgrHjg4bjgqPjg7PjgrDlsI7lhaXnm7joq4dcbmh0dHBzOi8vZ29sZGVuLW1vbmtleS50di9jb250YWN0Lmh0bWxcbuKAu+S6i+alreebuOirh+S7peWkluOBruWVj+WQiOOBm+OBq+OBr+WvvuW/nOOBhOOBn+OBl+OBi+OBreOBvuOBmeOBruOBp+OBlOS6huaJv+OBj+OBoOOBleOBhFxu5LiA6Iis55qE44Gq6LOq5ZWP44GvWW91VHViZeOBq+OCs+ODoeODs+ODiOOBj+OBoOOBleOBhFxuXG5cbiPjgb/jgpPjgarjgYzlpJblh7rjgpLlv5jjgozjgovjgY/jgonjgYToia/jgYTli5XnlLvjgpLkvZzjgo3jgYYiLAogICAgICAgICJ0aHVtYm5haWxzIjogewogICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9tVGROaTlNcWl1OC9kZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgICAgICAgImhlaWdodCI6IDkwCiAgICAgICAgICB9LAogICAgICAgICAgIm1lZGl1bSI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL21UZE5pOU1xaXU4L21xZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAzMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiAxODAKICAgICAgICAgIH0sCiAgICAgICAgICAiaGlnaCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL21UZE5pOU1xaXU4L2hxZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA0ODAsCiAgICAgICAgICAgICJoZWlnaHQiOiAzNjAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9tVGROaTlNcWl1OC9zZGRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNjQwLAogICAgICAgICAgICAiaGVpZ2h0IjogNDgwCiAgICAgICAgICB9LAogICAgICAgICAgIm1heHJlcyI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL21UZE5pOU1xaXU4L21heHJlc2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTI4MCwKICAgICAgICAgICAgImhlaWdodCI6IDcyMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNoYW5uZWxUaXRsZSI6ICJUZWFtWW91VHViZSBbSGVscF0iLAogICAgICAgICJwbGF5bGlzdElkIjogIlBMOWhXMXVTNkhVZnRMZEhJNlJJc2FmLWlYVG0wOXFuRXIiLAogICAgICAgICJwb3NpdGlvbiI6IDksCiAgICAgICAgInJlc291cmNlSWQiOiB7CiAgICAgICAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICAgICAgICJ2aWRlb0lkIjogIm1UZE5pOU1xaXU4IgogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIHsKICAgICAgImtpbmQiOiAieW91dHViZSNwbGF5bGlzdEl0ZW0iLAogICAgICAiZXRhZyI6ICJfY0pWNGk5SmM2d0tUYUVKYk9HVUxOUHFvYkEiLAogICAgICAiaWQiOiAiVUV3NWFGY3hkVk0yU0ZWbWRFeGtTRWsyVWtsellXWXRhVmhVYlRBNWNXNUZjaTQxUVRZMVEwVXhNVFZDT0Rjek5UaEUiLAogICAgICAic25pcHBldCI6IHsKICAgICAgICAicHVibGlzaGVkQXQiOiAiMjAyMC0wOS0xNlQxMToxMTozMloiLAogICAgICAgICJjaGFubmVsSWQiOiAiVUNNRFF4bTdjVXgzeVhrZmVIYTV6SklRIiwKICAgICAgICAidGl0bGUiOiAi44CQ6YGV5Y+N44CR44OB44Oj44Oz44ON44Or55m76Yyy6ICF44KS6LO85YWl44GZ44KL44Go5pyA5oKq44Gq5LqL5oWL44GM5b6F44Gj44Gm44GE44KLIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAi5LuK5Zue44GvWW91VHViZeOBruimj+e0hOmBleWPjeOBqOOBleOCjOOBpuOBhOOCi+ODgeODo+ODs+ODjeODq+eZu+mMsuiAheODu+imluiBtOWbnuaVsOOCkuizvOWFpeOBl+OBn+OBk+OBqOOBp+OBqeOCk+OBquOBk+OBqOOBjOi1t+OBk+OCi+OBruOBi+OCkuOBiuS8neOBiOOBl+OBvuOBmVxuXG4wOjAw44CA44OB44Oj44Oz44ON44Or55m76Yyy6ICF44O76KaW6IG05Zue5pWw44Gu6LO85YWl44Gv6KaP57SE6YGV5Y+N77yBXG4yOjEz44CA55m76Yyy6ICF44O76KaW6IG05Zue5pWw44GM6LO85YWl44Gn44GN44KL5aC05omAXG4yOjU344CA6LKp5aOy5qWt6ICF44Gv44Gp44GG44KE44Gj44Gm6KaW6IG044OH44O844K/44KS5LiN5q2j5pON5L2c44GX44Gm44GE44KL77yfXG40OjUz44CA6LO85YWl6ICF44GM6JC944Gh44KL6ZeHXG43OjE444CA44OB44Oj44Oz44ON44Or55m76Yyy6ICF44GM5oCl44Gr5rib44KL44Gu44Gv44GT44KM44GM5Y6f5Zug77yfXG44OjI544CAQUnjgoLjganjgpPjganjgpPlvLfljJbjgZXjgozopo/ntITpgZXlj43jgoLljrPjgZfjgY/lh6bnvbBcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG5cbuOAkOWFrOW8j0xJTkXjgJFcbmh0dHBzOi8vcGVyYWljaGkuY29tL2xhbmRpbmdfcGFnZXMvdmlldy9zYWthaWxpbmVcbuWFqOWbveOBp+OBrllvdVR1YmVy44Kq44OV5Lya44O744OT44K444ON44K55ZCR44GR55u46KuH5Lya44Gq44Gp44CB44Os44OZ44Or44Ki44OD44OX5oOF5aCx44KS5YWI6KGM6YWN5L+h44GX44Gm44GE44G+44GZXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu44CQ57WM5Za26ICF5ZCR44GR44Kq44Oz44Op44Kk44Oz44K144Ot44Oz44CRXG5odHRwczovL2NvbW11bml0eS5jYW1wLWZpcmUuanAvcHJvamVjdHMvdmlldy8yNTE2NjZcbuWFqOWbveOBruWkmuW9qeOBqualreeoruOBruODk+OCuOODjeOCuVlvdVR1YmVy44GM5Y+C5Yqg44CC6YWS5LqV44Gu44OO44Km44OP44Km44O75a6f6Le144OH44O844K/44Gv44GT44GT44Gr5YWx5pyJ44GX44Gm44GE44G+44GZXG5cbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7jgJBTTlPjgJFcbkZhY2Vib29rXG5odHRwczovL3d3dy5mYWNlYm9vay5jb20veW9zaGl0YWRhLnNha2FpXG5cblR3aXR0ZXJcbmh0dHBzOi8vdHdpdHRlci5jb20veW9zaGl0YWRhc2FrYWlcblxu5rCX6Lu944Gr44OV44Kp44Ot44O844GP44Gg44GV44GE44CA4oC7RkLjga/kuIDoqIDjg6Hjg4Pjgrvjg7zjgrjjgYTjgZ/jgaDjgZHjgovjgajliqnjgYvjgorjgb7jgZlcblxu77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/77y/XG7ilrzjgrPjg4Hjg6njgoLjgZzjgbLjgZTopqfjgY/jgaDjgZXjgYTilrxcblxu4pGgWW91VHViZe+8huWLleeUu+OBruWIneW/g+iAheOBq+imi+OBpuOBu+OBl+OBhOOCquOCueOCueODoeWLleeUu1xu4pGh5YuV55S744Gn5L2/55So44GX44Gm44GE44KL5pKu5b2x5Zmo5p2QXG7ikaLmmKDlg4/jg4fjgqPjg6zjgq/jgr/jg7zphZLkupXnpaXmraNcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaAgWW91VHViZeWIneW/g+iAheOBq+OCquOCueOCueODoeWLleeUu+OBvuOBqOOCgeOBvuOBl+OBn++8gVxuXG7jgJBMdi4x44CRMTDmnKxcbmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEw2QV9Cb21Ba1FPcVZJTEthLWh4by0tbVhGeW1VSE1uVVxuXG7jgJBMdi4y44CRNuacrFxuaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTDZBX0JvbUFrUU9wb0toTDZ5OENfVlpFUUdjckhFMzFSXG5cbuOAkEx2LjPjgJE25pysXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3J2RVp0YzNIVldCQUh0OEhacmx0c2Zcblxu44CQMTAw5Lq65YuV55S744Ki44OJ44OQ44Kk44K544CRXG5odHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMNkFfQm9tQWtRT3BrRm1zdFZxT1FTOVNmZ0Y1Yk1fRDZcbu+8v++8v++8v++8v++8v++8v++8v++8v++8v++8v1xuXG7ikaHphZLkupXjga7kvb/nlKjlmajmnZDvvIjjgqLjg57jgr7jg7PjgqLjgr3jgrfjgqjjgqTjg4jjg5fjg63jgrDjg6njg6DjgpLliKnnlKjvvIlcblxu44CQ44Kr44Oh44Op44CRUGFuYXNvbmljIEdINVxuaHR0cHM6Ly9hbXpuLnRvLzM0TkY3aUdcblxu44CQ5omL6aCD44Os44Oz44K644CRIFNVTU1JTFVYIDE1bW0vRjEuN1xuaHR0cHM6Ly9hbXpuLnRvLzJVN2xkd1Bcblxu44CQ6YeN5a6d44Os44Oz44K644CRU1VNTUlMVVggMTJtbS9GMS40XG5odHRwczovL2Ftem4udG8vMndXdnpXNFxuXG7jgJDjgrPjg7Pjg4fjgrjjgJFQYW5hc29uaWMgRE1DLUxYOS1LXG5odHRwOi8vYW16bi50by8yRjdVYk9uXG7igLvjgrnjg57jg5vjgYvjgonjgrnjg4bjg4Pjg5fjgqLjg4Pjg5fjgavkvqHmoLzjg7vmgKfog73jg7vnlLvos6pcblxu44CQ5LiJ6ISa44CRTWFuZnJvdHRvIOS4ieiEmuOCouODq+ODnzXmrrUg44OW44Op44OD44KvXG5odHRwOi8vYW16bi50by8yRkpPeFBEXG5cbuOAkOeFp+aYjuOAkVlvbmdudW8gTEVE44Op44Kk44OIIDYwMOeQg+OBrkxFROOCkuaQrei8iVxuaHR0cDovL2Ftem4udG8vMkhWaXc3UVxuXG7jgJDlpbPmgKflkJHjgZHjg6njgqTjg4jjgJHjg6rjg7PjgrDjg6njgqTjg4ggRk9TSVRBTiDlpJblvoQzNmNtLzE044Kk44Oz44OBXG5odHRwczovL2Ftem4udG8vMlZsYkV0a1xuXG7vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL/vvL9cblxu4pGi5pig5YOP44OH44Kj44Os44Kv44K/44O8IOmFkuS6leelpeato1xuXG7imIXjg5fjg63jg5XjgqPjg7zjg6tcbjE5ODDlubTnlJ/jgb7jgozjgIDnpo/kupXnnIzlh7rouqvjgIAzOeats1xu5pig5YOP5Yi25L2c5q20IDE35bm044CAODDmpa3nqK4xMDAwMOacrOS7peS4iuWItuS9nFxuXG4yMOats+OBi+OCieadseS6rOOCkuS4reW/g+OBq+ODleODquODvOaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvOOBqOOBl+OBpua0u+WLleOAglxuMjbmrbPjgYvjgonjga/npo/kupXnnIzjgavjgYLjgovjgrHjg7zjg5bjg6vjg4bjg6zjg5PjgavmiYDlsZ7jgILjgqvjg6Hjg6njg57jg7PjgIHjg6rjg53jg7zjgr/jg7zjgIHoqJjogIXjgIHmmKDlg4/nt6jpm4bjgarjgannlarntYTliLbkvZwg5qWt5YuZ5YWo6Iis44KS5ouF5b2T44CCXG4zNOats+OBi+OCieOBr+S4reWwj+S8gealreOCkuWvvuixoeOBqyBZb3VUdWJl5bCC6ZaAIOaYoOWDj+ijveS9nOOBruOBu+OBi+OAgeWLleeUu+OCu+ODn+ODiuODvOOChOS8gealreOBrllvdVR1YmXjg4Hjg6Pjg7Pjg43jg6vmp4vnr4njgpLjgrXjg53jg7zjg4jjgIJcblxu6ZuG5a6i5YuV55S744Gl44GP44KK44Gr5b+F6KaB44GqIOS8geeUu+ODu+aSruW9seODu+e3qOmbhuODu+eZuuS/oeODu+apn+adkOODu+ipseOBl+aWueOCkuODiOODvOOCv+ODq+OBp+aVmeOBiOOCieOCjOOCi+WbveWGheWUr+S4gOOBruaYoOWDj+ODh+OCo+ODrOOCr+OCv+ODvFxuMjAxOeW5tDXmnIjjgYvjgonml6XmnKzjgacz5Lq655uu44GuWW91VHViZeWFrOW8j+ODk+ODh+OCquOCs+ODs+ODiOODquODk+ODpeODvOOCv+ODvOOBqOOBl+OBpua0u+WLleS4rVxuXG7imIXkvIHmpa3lkJHjgZHli5XnlLvjg57jg7zjgrHjg4bjgqPjg7PjgrDlsI7lhaXnm7joq4dcbmh0dHBzOi8vZ29sZGVuLW1vbmtleS50di9jb250YWN0Lmh0bWxcbuKAu+S6i+alreebuOirh+S7peWkluOBruWVj+WQiOOBm+OBq+OBr+WvvuW/nOOBhOOBn+OBl+OBi+OBreOBvuOBmeOBruOBp+OBlOS6huaJv+OBj+OBoOOBleOBhFxu5LiA6Iis55qE44Gq6LOq5ZWP44GvWW91VHViZeOBq+OCs+ODoeODs+ODiOOBj+OBoOOBleOBhFxuXG5cbiPjgb/jgpPjgarjgYzlpJblh7rjgpLlv5jjgozjgovjgY/jgonjgYToia/jgYTli5XnlLvjgpLkvZzjgo3jgYYiLAogICAgICAgICJ0aHVtYm5haWxzIjogewogICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9IdnBsWTlCUEtHOC9kZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgICAgICAgImhlaWdodCI6IDkwCiAgICAgICAgICB9LAogICAgICAgICAgIm1lZGl1bSI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0h2cGxZOUJQS0c4L21xZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAzMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiAxODAKICAgICAgICAgIH0sCiAgICAgICAgICAiaGlnaCI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0h2cGxZOUJQS0c4L2hxZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiA0ODAsCiAgICAgICAgICAgICJoZWlnaHQiOiAzNjAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9IdnBsWTlCUEtHOC9zZGRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNjQwLAogICAgICAgICAgICAiaGVpZ2h0IjogNDgwCiAgICAgICAgICB9LAogICAgICAgICAgIm1heHJlcyI6IHsKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0h2cGxZOUJQS0c4L21heHJlc2RlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMTI4MCwKICAgICAgICAgICAgImhlaWdodCI6IDcyMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNoYW5uZWxUaXRsZSI6ICJUZWFtWW91VHViZSBbSGVscF0iLAogICAgICAgICJwbGF5bGlzdElkIjogIlBMOWhXMXVTNkhVZnRMZEhJNlJJc2FmLWlYVG0wOXFuRXIiLAogICAgICAgICJwb3NpdGlvbiI6IDEwLAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICJIdnBsWTlCUEtHOCIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInlvdXR1YmUjcGxheWxpc3RJdGVtIiwKICAgICAgImV0YWciOiAiclAyYmlTdlJ5NkZSVnpQMFRVWEprbkN6M3VJIiwKICAgICAgImlkIjogIlVFdzVhRmN4ZFZNMlNGVm1kRXhrU0VrMlVrbHpZV1l0YVZoVWJUQTVjVzVGY2k0eU1VUXlRVFF6TWpSRE56TXlRVE15IiwKICAgICAgInNuaXBwZXQiOiB7CiAgICAgICAgInB1Ymxpc2hlZEF0IjogIjIwMjAtMDktMjhUMDU6MzU6NTJaIiwKICAgICAgICAiY2hhbm5lbElkIjogIlVDTURReG03Y1V4M3lYa2ZlSGE1ekpJUSIsCiAgICAgICAgInRpdGxlIjogIuOAkFlvdVR1YmXjga7mlrDmg4XloLHvvIHjgJHjgIzlubTpvaLliLbpmZDjgI3jgbjjga7lj5bjgorntYTjgb/jgavjgaTjgYTjgaYiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJZb3VUdWJlKOODpuODvOODgeODpeODvOODlinjgavjga/lubTpvaLliLbpmZDjga7jgYLjgovli5XnlLvjgYzjgYLjgorjgb7jgZnjgYzjgIHlubTpvaLliLbpmZDjgavplqLjgZnjgovlpInmm7TngrnjgoRcbuips+OBl+OBhOioreWumuaWueazleOBquOBqeaWsOOBl+OBhOaDheWgseOCkue0ueS7i+OBl+OBvuOBmeOAglxu44OR44K944Kz44Oz44KE44K544Oe44Ob44Gu5pON5L2c44KE6Kit5a6a44Gr44Gk44GE44Gm6ZaL6Kit44GX44Gm44GE44G+44GZ44CC44OB44Oj44Oz44ON44Or55m76Yyy5piv6Z2e44GK6aGY44GE44GX44G+44GZ4pmqXG7ih5JodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDRjRjN1VrSXVzRnNmZ2R4Y0szTF9Bdz9zdWJfY29uZmlybWF0aW9uPTFcblxu55uu5qyhXG4wOjAw44CA5bm06b2i5Yi26ZmQ44Gr6Zai44GZ44KL5aSJ5pu054K5XG4xOjE244CA6KaW6IG06ICF5YG044Gu5aSJ5pu054K5XG4zOjE244CA5oqV56i/6ICF5YG044Gu5aSJ5pu054K544Go6Kit5a6a5pa55rOVXG44OjE144CAWW91VHViZeOBq+OCiOOCi+iHquWLleOBp+OBruW5tOm9ouWItumZkOOBruioreWumuOBq+OBpOOBhOOBplxuOTozNOOAgOW5tOm9ouWItumZkOOBq+OCiOOCi+ODgeODo+ODs+ODjeODq+OBuOOBruW9semfv1xuMTA6MjAg5a2Q44Gp44KC5ZCR44GR44Kz44Oz44OG44Oz44OE44Go44Gu6YGV44GEXG4xMTozOCDjgb7jgajjgoHjgIDjgIBcblxuXG7jgJDjgYrjgrnjgrnjg6Hli5XnlLvjg7vplqLpgKPli5XnlLvjgJFcblxu44CQWW91dHViZeODpuODvOODgeODpeODvOODlu+8ieOAkeWtkOOBqeOCguWQkeOBkeWLleeUu+OBq+mWouOBmeOCi+imj+e0hOOBq+OBpOOBhOOBplxuaHR0cHM6Ly95b3V0dS5iZS83eEdqVmRPUG9Cc1xuXG7jgJBZb3VUdWJl5L2/44GE5pa544CR44OV44Kj44O844OJ44OQ44OD44Kv44Gu6YCB44KK5pa544Go44K144Od44O844OI44Gr44Gk44GE44GmXG5odHRwczovL3lvdXR1LmJlL2JLT05oLTZjc1JzXG5cbuOAkFlvdVR1YmXjg6bjg7zjg4Hjg6Xjg7zjg5bjgJHlj47nm4rjga7mlrDjgZfjgYTmjIfmqJnjgIxSUE3jgI3jgajjga/vvJ9cbmh0dHBzOi8veW91dHUuYmUvVlo4eHR3aXNMTVlcblxuWW91VHViZeaLheW9k+iAheOBq+iBnuOBj+OAjDIwMjDlubTjgYvjgonjga7lrZDkvpvlkJHjgZHli5XnlLvjga7opo/liLblpInmm7TjgI1cbmh0dHBzOi8veW91dHUuYmUvNG85VGJHZjZxMWtcblxuWW91VHViZeWtkOS+m+WQkeOBkeaLheW9k+ekvuWToeOBq+iBnuOBhOOBn+azqOaEj+S6i+mgheOChOODgeODo+ODs+ODjeODq+ODu+WLleeUu+OBuOOBruW9semfv1xuaHR0cHM6Ly95b3V0dS5iZS9mSGtBNG5lbmhTb1xuXG5cbuino+iqrOODmuODvOOCuFxu4oaT4oaT4oaTXG5Zb3VUdWJlKOODpuODvOODgeODpeODvOODlinjg7vlubTpvaLliLbpmZDjga7li5XnlLvjgavlr77jgZnjgovmlrDjgZfjgYTlj5bjgorntYTjgb/jgajjga/vvJ9cbmh0dHBzOi8vcGpveS5uZXQvP3A9Mjc0NjBcblxu5YuV55S744OV44Kh44OzXG7ihpJodHRwOi8vcGpveS5uZXQvXG5cbiNZb3V0dWJlI+W5tOm9ouWItumZkCNZb3VUdWJl44Kz44Oz44OI44Oq44OT44Ol44O844K/44O844OL44Ol44O844K5IiwKICAgICAgICAidGh1bWJuYWlscyI6IHsKICAgICAgICAgICJkZWZhdWx0IjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvcUFWd3BCWjFIWUEvZGVmYXVsdC5qcGciLAogICAgICAgICAgICAid2lkdGgiOiAxMjAsCiAgICAgICAgICAgICJoZWlnaHQiOiA5MAogICAgICAgICAgfSwKICAgICAgICAgICJtZWRpdW0iOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9xQVZ3cEJaMUhZQS9tcWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogMzIwLAogICAgICAgICAgICAiaGVpZ2h0IjogMTgwCiAgICAgICAgICB9LAogICAgICAgICAgImhpZ2giOiB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9xQVZ3cEJaMUhZQS9ocWRlZmF1bHQuanBnIiwKICAgICAgICAgICAgIndpZHRoIjogNDgwLAogICAgICAgICAgICAiaGVpZ2h0IjogMzYwCiAgICAgICAgICB9LAogICAgICAgICAgInN0YW5kYXJkIjogewogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvcUFWd3BCWjFIWUEvc2RkZWZhdWx0LmpwZyIsCiAgICAgICAgICAgICJ3aWR0aCI6IDY0MCwKICAgICAgICAgICAgImhlaWdodCI6IDQ4MAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNoYW5uZWxUaXRsZSI6ICJUZWFtWW91VHViZSBbSGVscF0iLAogICAgICAgICJwbGF5bGlzdElkIjogIlBMOWhXMXVTNkhVZnRMZEhJNlJJc2FmLWlYVG0wOXFuRXIiLAogICAgICAgICJwb3NpdGlvbiI6IDExLAogICAgICAgICJyZXNvdXJjZUlkIjogewogICAgICAgICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAgICAgICAidmlkZW9JZCI6ICJxQVZ3cEJaMUhZQSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn0K
|
49
|
+
http_version:
|
50
|
+
recorded_at: Tue, 27 Oct 2020 18:42:18 GMT
|
51
|
+
- request:
|
52
|
+
method: get
|
53
|
+
uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=%3Cyoutube_api_key_123%3E&maxResults=50&part=snippet&playlistId=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr
|
54
|
+
body:
|
55
|
+
encoding: US-ASCII
|
56
|
+
string: ''
|
57
|
+
headers:
|
58
|
+
User-Agent:
|
59
|
+
- VideoInfo/2.8.0
|
60
|
+
Accept-Encoding:
|
61
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
62
|
+
Accept:
|
63
|
+
- "*/*"
|
64
|
+
response:
|
65
|
+
status:
|
66
|
+
code: 400
|
67
|
+
message: Bad Request
|
68
|
+
headers:
|
69
|
+
Vary:
|
70
|
+
- Origin
|
71
|
+
- Referer
|
72
|
+
- X-Origin
|
73
|
+
Content-Type:
|
74
|
+
- application/json; charset=UTF-8
|
75
|
+
Date:
|
76
|
+
- Tue, 27 Oct 2020 18:44:53 GMT
|
77
|
+
Server:
|
78
|
+
- scaffolding on HTTPServer2
|
79
|
+
Cache-Control:
|
80
|
+
- private
|
81
|
+
X-Xss-Protection:
|
82
|
+
- '0'
|
83
|
+
X-Frame-Options:
|
84
|
+
- SAMEORIGIN
|
85
|
+
X-Content-Type-Options:
|
86
|
+
- nosniff
|
87
|
+
Alt-Svc:
|
88
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
89
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
90
|
+
ma=2592000; v="46,43"
|
91
|
+
Transfer-Encoding:
|
92
|
+
- chunked
|
93
|
+
body:
|
94
|
+
encoding: ASCII-8BIT
|
95
|
+
string: |
|
96
|
+
{
|
97
|
+
"error": {
|
98
|
+
"code": 400,
|
99
|
+
"message": "API key not valid. Please pass a valid API key.",
|
100
|
+
"errors": [
|
101
|
+
{
|
102
|
+
"message": "API key not valid. Please pass a valid API key.",
|
103
|
+
"domain": "global",
|
104
|
+
"reason": "badRequest"
|
105
|
+
}
|
106
|
+
],
|
107
|
+
"status": "INVALID_ARGUMENT"
|
108
|
+
}
|
109
|
+
}
|
110
|
+
http_version:
|
111
|
+
recorded_at: Tue, 27 Oct 2020 18:44:53 GMT
|
112
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,114 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=youtube_api_key_123&maxResults=50&part=snippet&playlistId=PL0E8117603D70E10A
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- VideoInfo/2.8.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=UTF-8
|
23
|
+
Vary:
|
24
|
+
- Origin
|
25
|
+
- Referer
|
26
|
+
- X-Origin
|
27
|
+
Date:
|
28
|
+
- Tue, 27 Oct 2020 18:42:21 GMT
|
29
|
+
Server:
|
30
|
+
- scaffolding on HTTPServer2
|
31
|
+
Cache-Control:
|
32
|
+
- private
|
33
|
+
X-Xss-Protection:
|
34
|
+
- '0'
|
35
|
+
X-Frame-Options:
|
36
|
+
- SAMEORIGIN
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
Alt-Svc:
|
40
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
41
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
42
|
+
ma=2592000; v="46,43"
|
43
|
+
Transfer-Encoding:
|
44
|
+
- chunked
|
45
|
+
body:
|
46
|
+
encoding: ASCII-8BIT
|
47
|
+
string: |
|
48
|
+
{
|
49
|
+
"items": []
|
50
|
+
}
|
51
|
+
http_version:
|
52
|
+
recorded_at: Tue, 27 Oct 2020 18:42:21 GMT
|
53
|
+
- request:
|
54
|
+
method: get
|
55
|
+
uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=%3Cyoutube_api_key_123%3E&maxResults=50&part=snippet&playlistId=PL0E8117603D70E10A
|
56
|
+
body:
|
57
|
+
encoding: US-ASCII
|
58
|
+
string: ''
|
59
|
+
headers:
|
60
|
+
User-Agent:
|
61
|
+
- VideoInfo/2.8.0
|
62
|
+
Accept-Encoding:
|
63
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
64
|
+
Accept:
|
65
|
+
- "*/*"
|
66
|
+
response:
|
67
|
+
status:
|
68
|
+
code: 400
|
69
|
+
message: Bad Request
|
70
|
+
headers:
|
71
|
+
Vary:
|
72
|
+
- Origin
|
73
|
+
- Referer
|
74
|
+
- X-Origin
|
75
|
+
Content-Type:
|
76
|
+
- application/json; charset=UTF-8
|
77
|
+
Date:
|
78
|
+
- Tue, 27 Oct 2020 18:44:54 GMT
|
79
|
+
Server:
|
80
|
+
- scaffolding on HTTPServer2
|
81
|
+
Cache-Control:
|
82
|
+
- private
|
83
|
+
X-Xss-Protection:
|
84
|
+
- '0'
|
85
|
+
X-Frame-Options:
|
86
|
+
- SAMEORIGIN
|
87
|
+
X-Content-Type-Options:
|
88
|
+
- nosniff
|
89
|
+
Alt-Svc:
|
90
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
91
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
92
|
+
ma=2592000; v="46,43"
|
93
|
+
Transfer-Encoding:
|
94
|
+
- chunked
|
95
|
+
body:
|
96
|
+
encoding: ASCII-8BIT
|
97
|
+
string: |
|
98
|
+
{
|
99
|
+
"error": {
|
100
|
+
"code": 400,
|
101
|
+
"message": "API key not valid. Please pass a valid API key.",
|
102
|
+
"errors": [
|
103
|
+
{
|
104
|
+
"message": "API key not valid. Please pass a valid API key.",
|
105
|
+
"domain": "global",
|
106
|
+
"reason": "badRequest"
|
107
|
+
}
|
108
|
+
],
|
109
|
+
"status": "INVALID_ARGUMENT"
|
110
|
+
}
|
111
|
+
}
|
112
|
+
http_version:
|
113
|
+
recorded_at: Tue, 27 Oct 2020 18:44:55 GMT
|
114
|
+
recorded_with: VCR 3.0.3
|
@@ -3,58 +3,78 @@ require 'spec_helper'
|
|
3
3
|
describe VideoInfo::Provider do
|
4
4
|
class ProviderFu < VideoInfo::Provider
|
5
5
|
def _url_regex
|
6
|
-
|
6
|
+
%r{foo\/(\d)}
|
7
7
|
end
|
8
8
|
|
9
9
|
def embed_url
|
10
|
-
|
10
|
+
'//foo.com'
|
11
11
|
end
|
12
12
|
|
13
13
|
def _default_url_attributes; {} end
|
14
|
+
|
14
15
|
def _default_iframe_attributes; {} end
|
15
16
|
end
|
16
17
|
let(:url) { 'url' }
|
17
|
-
let(:options) { {
|
18
|
+
let(:options) { {} }
|
18
19
|
let(:provider) { ProviderFu.new('foo/1', options) }
|
19
20
|
|
20
|
-
describe
|
21
|
+
describe 'initialize' do
|
22
|
+
it 'should raise error if #_url_regex is not implemented' do
|
23
|
+
error_msg = 'Provider class must implement #_url_regex private method'
|
24
|
+
expected = expect { VideoInfo::Provider.new(url) }
|
25
|
+
expected.to raise_error(NotImplementedError, error_msg)
|
26
|
+
end
|
21
27
|
|
22
|
-
it
|
23
|
-
|
28
|
+
it 'should raise error if #_api_url is not implemented' do
|
29
|
+
api_url_error_msg = 'Provider class must implement ' \
|
30
|
+
'#_api_url private method'
|
31
|
+
expected = expect { provider.data }
|
32
|
+
expected.to raise_error(NotImplementedError, api_url_error_msg)
|
33
|
+
end
|
24
34
|
|
25
|
-
it
|
26
|
-
|
35
|
+
it 'sets default user_agent options' do
|
36
|
+
user_agent_hash = { 'User-Agent' => "VideoInfo/#{VideoInfo::VERSION}" }
|
37
|
+
expect(provider.options).to eq(user_agent_hash)
|
27
38
|
end
|
28
39
|
|
29
|
-
context
|
40
|
+
context 'with custom User-Agent options' do
|
30
41
|
let(:options) { { 'User-Agent' => 'Test User Agent / 1.0' } }
|
31
42
|
|
32
|
-
it
|
33
|
-
expect(provider.options).to eq(
|
43
|
+
it 'sets the option' do
|
44
|
+
expect(provider.options).to eq('User-Agent' => 'Test User Agent / 1.0')
|
34
45
|
end
|
35
46
|
end
|
36
47
|
|
37
|
-
context
|
48
|
+
context 'with Referer options' do
|
38
49
|
let(:options) { { referer: 'http://google.com' } }
|
39
50
|
|
40
|
-
it
|
41
|
-
expect(provider.options).to include(
|
51
|
+
it 'sets the option' do
|
52
|
+
expect(provider.options).to include('Referer' => 'http://google.com')
|
42
53
|
end
|
43
54
|
end
|
44
55
|
end
|
45
56
|
|
46
|
-
describe
|
47
|
-
it
|
48
|
-
|
57
|
+
describe 'embed_code' do
|
58
|
+
it 'supports url_attributes option' do
|
59
|
+
embed_str = '<iframe src="//foo.com?foo=bar" frameborder="0"></iframe>'
|
60
|
+
expected = expect(provider.embed_code(url_attributes: { foo: 'bar' }))
|
61
|
+
expected.to eq embed_str
|
49
62
|
end
|
50
63
|
|
51
|
-
it
|
52
|
-
|
64
|
+
it 'supports url_attributes option' do
|
65
|
+
embed_str = '<iframe src="//foo.com" frameborder="0" foo="bar"></iframe>'
|
66
|
+
expected = expect(provider.embed_code(iframe_attributes: { foo: 'bar' }))
|
67
|
+
expected.to eq embed_str
|
53
68
|
end
|
54
69
|
end
|
55
70
|
|
56
|
-
describe
|
57
|
-
it
|
71
|
+
describe '.usable?' do
|
72
|
+
it 'should raise eror if not usable' do
|
73
|
+
error_msg = 'Provider class must implement .usable? public method'
|
74
|
+
expected = expect do
|
75
|
+
VideoInfo::Provider.usable?('url')
|
76
|
+
end
|
77
|
+
expected.to raise_error(NotImplementedError, error_msg)
|
78
|
+
end
|
58
79
|
end
|
59
|
-
|
60
80
|
end
|
@@ -2,29 +2,28 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe VideoInfo::Providers::Dailymotion do
|
5
|
-
|
6
|
-
describe ".usable?" do
|
5
|
+
describe '.usable?' do
|
7
6
|
subject { VideoInfo::Providers::Dailymotion.usable?(url) }
|
8
7
|
|
9
|
-
context
|
8
|
+
context 'with dailymotion url' do
|
10
9
|
let(:url) { 'http://www.dailymotion.com/video/x7lni3' }
|
11
10
|
it { is_expected.to be_truthy }
|
12
11
|
end
|
13
12
|
|
14
|
-
context
|
13
|
+
context 'with dai.ly url' do
|
15
14
|
let(:url) { 'http://dai.ly/video/x7lni3' }
|
16
15
|
it { is_expected.to be_truthy }
|
17
16
|
end
|
18
17
|
|
19
|
-
context
|
18
|
+
context 'with other url' do
|
20
19
|
let(:url) { 'http://www.youtube.com/x7lni3' }
|
21
20
|
it { is_expected.to be_falsey }
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
25
|
-
describe
|
26
|
-
context
|
27
|
-
subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
|
24
|
+
describe '#available?' do
|
25
|
+
context 'with valid video', :vcr do
|
26
|
+
subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3'.freeze) }
|
28
27
|
|
29
28
|
describe '#available?' do
|
30
29
|
subject { super().available? }
|
@@ -32,7 +31,7 @@ describe VideoInfo::Providers::Dailymotion do
|
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
|
-
context
|
34
|
+
context 'with invalid video url', :vcr do
|
36
35
|
subject { VideoInfo.new('http://www.dailymotion.com/video/inValIdiD') }
|
37
36
|
|
38
37
|
describe '#available?' do
|
@@ -42,7 +41,7 @@ describe VideoInfo::Providers::Dailymotion do
|
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
context
|
44
|
+
context 'with video x7lni3', :vcr do
|
46
45
|
subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
|
47
46
|
|
48
47
|
describe '#provider' do
|
@@ -67,7 +66,9 @@ describe VideoInfo::Providers::Dailymotion do
|
|
67
66
|
|
68
67
|
describe '#embed_code' do
|
69
68
|
subject { super().embed_code }
|
70
|
-
|
69
|
+
embed_code = '<iframe src="//www.dailymotion.com/embed/video/x7lni3?' \
|
70
|
+
'autoplay=0" frameborder="0"></iframe>'
|
71
|
+
it { is_expected.to eq embed_code }
|
71
72
|
end
|
72
73
|
|
73
74
|
describe '#title' do
|
@@ -75,19 +76,40 @@ describe VideoInfo::Providers::Dailymotion do
|
|
75
76
|
it { is_expected.to eq 'Mario Kart (Rémi Gaillard)' }
|
76
77
|
end
|
77
78
|
|
79
|
+
describe '#author' do
|
80
|
+
subject { super().author }
|
81
|
+
it { is_expected.to eq 'Rémi Gaillard' }
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#author_url' do
|
85
|
+
subject { super().author_url }
|
86
|
+
it { is_expected.to eq 'https://www.dailymotion.com/nqtv' }
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#author_thumbnail' do
|
90
|
+
subject { super().author_thumbnail }
|
91
|
+
it { is_expected.to match /https:\/\/s[12].dmcdn.net\/u\/US931VO3V-24wNr1\/60x60/ }
|
92
|
+
end
|
93
|
+
|
78
94
|
describe '#description' do
|
79
95
|
subject { super().description }
|
80
|
-
|
96
|
+
description_text = 'Super Rémi Kart est un jeu vidéo de course ' \
|
97
|
+
'développé et édité par N\'Importe Quoi TV. ' \
|
98
|
+
'Sa principale originalité vient de sa réalité' \
|
99
|
+
'...<br />L\'aventure continue sur www.nimportequi.com'
|
100
|
+
it { is_expected.to eq description_text }
|
81
101
|
end
|
82
102
|
|
83
103
|
describe '#keywords' do
|
84
104
|
subject { super().keywords }
|
85
|
-
|
105
|
+
keywords_list = %w(rémi remi gaillard imposteur imposture
|
106
|
+
mario bros kart nintendo jeux)
|
107
|
+
it { is_expected.to eq keywords_list }
|
86
108
|
end
|
87
109
|
|
88
110
|
describe '#duration' do
|
89
111
|
subject { super().duration }
|
90
|
-
it { is_expected.to eq 136}
|
112
|
+
it { is_expected.to eq 136 }
|
91
113
|
end
|
92
114
|
|
93
115
|
describe '#width' do
|
@@ -102,45 +124,72 @@ describe VideoInfo::Providers::Dailymotion do
|
|
102
124
|
|
103
125
|
describe '#date' do
|
104
126
|
subject { super().date }
|
105
|
-
it
|
127
|
+
it 'should show correct date' do
|
128
|
+
is_expected.to eq Time.parse('2008-12-03 16:29:31 UTC', Time.now.utc)
|
129
|
+
end
|
106
130
|
end
|
107
131
|
|
108
132
|
describe '#thumbnail_small' do
|
109
133
|
subject { super().thumbnail_small }
|
110
|
-
it { is_expected.to
|
134
|
+
it { is_expected.to match /https:\/\/s[12].dmcdn.net\/v\/mj4x1VaO59OF6TK6\/x60/ }
|
111
135
|
end
|
112
136
|
|
113
137
|
describe '#thumbnail_medium' do
|
114
138
|
subject { super().thumbnail_medium }
|
115
|
-
it { is_expected.to
|
139
|
+
it { is_expected.to match /https:\/\/s[12].dmcdn.net\/v\/mj4x1VaO59Vm42lt\/x240/ }
|
116
140
|
end
|
117
141
|
|
118
142
|
describe '#thumbnail_large' do
|
119
143
|
subject { super().thumbnail_large }
|
120
|
-
it { is_expected.to
|
144
|
+
it { is_expected.to match /https:\/\/s[12].dmcdn.net\/v\/mj4x1VaO59VyFzJt\/x720/ }
|
145
|
+
end
|
146
|
+
|
147
|
+
describe '#thumbnail_large_2x' do
|
148
|
+
subject { super().thumbnail_large_2x }
|
149
|
+
it { is_expected.to be_nil }
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '#thumbnail_maxres' do
|
153
|
+
subject { super().thumbnail_maxres }
|
154
|
+
it { is_expected.to be_nil }
|
155
|
+
end
|
156
|
+
|
157
|
+
describe '#thumbnail' do
|
158
|
+
subject { super().thumbnail }
|
159
|
+
it { is_expected.to match /https:\/\/s[12].dmcdn.net\/v\/mj4x1VaO59VyFzJt\/x720/ }
|
121
160
|
end
|
122
161
|
|
123
162
|
describe '#view_count' do
|
124
163
|
subject { super().view_count }
|
125
|
-
it { is_expected.to be >
|
164
|
+
it { is_expected.to be > 10_000_000 }
|
126
165
|
end
|
127
166
|
end
|
128
167
|
|
129
|
-
context
|
168
|
+
context 'with video x7lni3 and url_attributes', :vcr do
|
130
169
|
subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
|
131
170
|
|
132
|
-
it
|
171
|
+
it do
|
172
|
+
embed_code = subject.embed_code(url_attributes: { autoplay: 1 })
|
173
|
+
expect(embed_code).to match(/autoplay=1/)
|
174
|
+
end
|
133
175
|
end
|
134
176
|
|
135
|
-
context
|
177
|
+
context 'with video x7lni3 and iframe_attributes', :vcr do
|
136
178
|
subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
|
137
179
|
|
138
|
-
it
|
139
|
-
|
180
|
+
it 'should properly apply dimensions attributes' do
|
181
|
+
dimensions = { width: 800, height: 600 }
|
182
|
+
embed_code = subject.embed_code(iframe_attributes: dimensions)
|
183
|
+
expect(embed_code).to match(/width="800"/)
|
184
|
+
expect(embed_code).to match(/height="600"/)
|
185
|
+
end
|
140
186
|
end
|
141
187
|
|
142
|
-
context
|
143
|
-
|
188
|
+
context 'with video x7lni3 in text', :vcr do
|
189
|
+
url_in_text = '<a href="http://www.dailymotion.com/video/x7lni3">' \
|
190
|
+
'http://www.dailymotion.com/video/x7lni3</a>'
|
191
|
+
|
192
|
+
subject { VideoInfo.new(url_in_text) }
|
144
193
|
|
145
194
|
describe '#provider' do
|
146
195
|
subject { super().provider }
|
@@ -152,5 +201,4 @@ describe VideoInfo::Providers::Dailymotion do
|
|
152
201
|
it { is_expected.to eq 'x7lni3' }
|
153
202
|
end
|
154
203
|
end
|
155
|
-
|
156
204
|
end
|