From 453698570f26bebd37b39df8537d993b57d77b8b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Fri, 16 Jan 2015 15:58:13 -0200 Subject: [PATCH] Imported Upstream version 2015.01.16 --- Makefile | 23 +- README.md | 157 ++++-- README.txt | 207 ++++++-- devscripts/gh-pages/update-sites.py | 2 +- devscripts/make_contributing.py | 32 ++ devscripts/make_supportedsites.py | 45 ++ devscripts/prepare_manpage.py | 15 +- docs/supportedsites.md | 500 ++++++++++++++++++ test/helper.py | 34 +- test/swftests/ArrayAccess.swf | Bin 610 -> 608 bytes test/swftests/ClassCall.swf | Bin 587 -> 582 bytes test/swftests/ClassConstruction.swf | Bin 555 -> 555 bytes test/swftests/ConstArrayAccess.swf | Bin 629 -> 628 bytes test/swftests/ConstantInt.swf | Bin 516 -> 519 bytes test/swftests/DictCall.swf | Bin 548 -> 547 bytes test/swftests/EqualsOperator.swf | Bin 511 -> 508 bytes test/swftests/LocalVars.swf | Bin 518 -> 515 bytes test/swftests/MemberAssignment.swf | Bin 560 -> 558 bytes test/swftests/NeOperator.swf | Bin 538 -> 537 bytes test/swftests/PrivateCall.swf | Bin 596 -> 594 bytes test/swftests/PrivateVoidCall.swf | Bin 603 -> 602 bytes test/swftests/StaticAssignment.swf | Bin 519 -> 516 bytes test/swftests/StaticRetrieval.swf | Bin 520 -> 518 bytes test/swftests/StringBasics.swf | Bin 522 -> 519 bytes test/swftests/StringCharCodeAt.swf | Bin 557 -> 555 bytes test/swftests/StringConversion.swf | Bin 531 -> 531 bytes test/test_InfoExtractor.py | 18 + test/test_YoutubeDL.py | 35 +- test/test_age_restriction.py | 5 - test/test_download.py | 4 +- test/test_subtitles.py | 36 ++ test/test_unicode_literals.py | 16 +- test/test_utils.py | 64 ++- test/test_write_info_json.py | 76 --- youtube-dl | Bin 675827 -> 744198 bytes youtube-dl.1 | 189 ++++++- youtube-dl.bash-completion | 2 +- youtube-dl.fish | 19 +- youtube-dl.zsh | 2 +- youtube_dl/YoutubeDL.py | 285 ++++++---- youtube_dl/__init__.py | 98 ++-- youtube_dl/compat.py | 34 +- youtube_dl/downloader/common.py | 41 +- youtube_dl/downloader/f4m.py | 50 +- youtube_dl/downloader/hls.py | 14 +- youtube_dl/downloader/http.py | 34 +- youtube_dl/downloader/mplayer.py | 8 +- youtube_dl/downloader/rtmp.py | 4 +- youtube_dl/extractor/__init__.py | 65 ++- youtube_dl/extractor/adobetv.py | 70 +++ youtube_dl/extractor/adultswim.py | 201 ++++--- youtube_dl/extractor/aljazeera.py | 35 ++ youtube_dl/extractor/allocine.py | 10 +- youtube_dl/extractor/alphaporno.py | 77 +++ youtube_dl/extractor/aol.py | 48 +- youtube_dl/extractor/appletrailers.py | 2 +- youtube_dl/extractor/archiveorg.py | 52 +- youtube_dl/extractor/arte.py | 4 +- youtube_dl/extractor/atresplayer.py | 144 +++++ youtube_dl/extractor/atttechchannel.py | 55 ++ youtube_dl/extractor/audiomack.py | 138 +++-- youtube_dl/extractor/auengine.py | 26 +- youtube_dl/extractor/azubu.py | 93 ++++ youtube_dl/extractor/bambuser.py | 2 +- youtube_dl/extractor/bandcamp.py | 15 +- youtube_dl/extractor/bbccouk.py | 138 +++-- youtube_dl/extractor/behindkink.py | 29 +- youtube_dl/extractor/bet.py | 107 ++++ youtube_dl/extractor/bilibili.py | 72 ++- youtube_dl/extractor/bliptv.py | 38 +- youtube_dl/extractor/breakcom.py | 1 - youtube_dl/extractor/brightcove.py | 24 +- youtube_dl/extractor/buzzfeed.py | 6 +- youtube_dl/extractor/canalplus.py | 12 + youtube_dl/extractor/ceskatelevize.py | 137 +++-- youtube_dl/extractor/channel9.py | 13 +- youtube_dl/extractor/cinchcast.py | 52 ++ youtube_dl/extractor/cnet.py | 35 +- youtube_dl/extractor/cnn.py | 41 +- youtube_dl/extractor/collegerama.py | 92 ++++ youtube_dl/extractor/comcarcoff.py | 57 ++ youtube_dl/extractor/comedycentral.py | 9 +- youtube_dl/extractor/common.py | 140 ++++- youtube_dl/extractor/commonmistakes.py | 29 + youtube_dl/extractor/condenast.py | 6 +- youtube_dl/extractor/crunchyroll.py | 18 +- youtube_dl/extractor/cspan.py | 1 - youtube_dl/extractor/dailymotion.py | 10 +- youtube_dl/extractor/daum.py | 4 +- youtube_dl/extractor/dbtv.py | 3 +- youtube_dl/extractor/discovery.py | 46 +- youtube_dl/extractor/drbonanza.py | 131 +++++ youtube_dl/extractor/drtv.py | 2 +- youtube_dl/extractor/dvtv.py | 125 +++++ youtube_dl/extractor/ebaumsworld.py | 5 +- youtube_dl/extractor/echomsk.py | 46 ++ youtube_dl/extractor/ehow.py | 11 +- youtube_dl/extractor/eighttracks.py | 29 +- youtube_dl/extractor/ellentv.py | 35 +- youtube_dl/extractor/elpais.py | 6 +- youtube_dl/extractor/engadget.py | 8 +- youtube_dl/extractor/eroprofile.py | 45 ++ youtube_dl/extractor/escapist.py | 5 +- youtube_dl/extractor/everyonesmixtape.py | 4 +- youtube_dl/extractor/extremetube.py | 8 +- youtube_dl/extractor/facebook.py | 12 +- youtube_dl/extractor/fc2.py | 13 +- youtube_dl/extractor/firedrive.py | 11 +- youtube_dl/extractor/fivemin.py | 15 +- youtube_dl/extractor/fktv.py | 21 +- youtube_dl/extractor/fourtube.py | 86 +-- youtube_dl/extractor/foxgay.py | 48 ++ youtube_dl/extractor/foxnews.py | 94 ++++ youtube_dl/extractor/franceculture.py | 2 +- youtube_dl/extractor/francetv.py | 10 +- youtube_dl/extractor/gameone.py | 63 ++- youtube_dl/extractor/gamespot.py | 4 +- youtube_dl/extractor/gdcvault.py | 5 +- youtube_dl/extractor/generic.py | 47 +- youtube_dl/extractor/giantbomb.py | 81 +++ youtube_dl/extractor/giga.py | 101 ++++ youtube_dl/extractor/goldenmoustache.py | 9 - youtube_dl/extractor/golem.py | 4 +- youtube_dl/extractor/googlesearch.py | 2 +- youtube_dl/extractor/gorillavid.py | 8 +- youtube_dl/extractor/goshgay.py | 51 +- youtube_dl/extractor/groupon.py | 50 ++ youtube_dl/extractor/hellporno.py | 71 +++ youtube_dl/extractor/helsinki.py | 37 +- youtube_dl/extractor/hitbox.py | 166 ++++++ youtube_dl/extractor/hostingbulk.py | 8 +- youtube_dl/extractor/howstuffworks.py | 127 ++--- youtube_dl/extractor/huffpost.py | 20 +- youtube_dl/extractor/hypem.py | 11 +- youtube_dl/extractor/imdb.py | 3 +- youtube_dl/extractor/infoq.py | 7 +- youtube_dl/extractor/internetvideoarchive.py | 6 +- youtube_dl/extractor/iprima.py | 4 +- youtube_dl/extractor/ivi.py | 4 +- youtube_dl/extractor/karaoketv.py | 40 ++ youtube_dl/extractor/keek.py | 30 +- youtube_dl/extractor/keezmovies.py | 7 +- youtube_dl/extractor/khanacademy.py | 4 +- youtube_dl/extractor/kontrtube.py | 23 +- youtube_dl/extractor/livestream.py | 4 +- youtube_dl/extractor/lnkgo.py | 124 +++++ youtube_dl/extractor/lrt.py | 6 +- youtube_dl/extractor/lynda.py | 6 +- youtube_dl/extractor/malemotion.py | 38 +- youtube_dl/extractor/metacafe.py | 4 +- youtube_dl/extractor/minhateca.py | 72 +++ youtube_dl/extractor/mit.py | 19 +- youtube_dl/extractor/mitele.py | 13 +- youtube_dl/extractor/mixcloud.py | 6 +- youtube_dl/extractor/moevideo.py | 9 +- youtube_dl/extractor/mofosex.py | 6 +- youtube_dl/extractor/moniker.py | 7 +- youtube_dl/extractor/mooshare.py | 14 +- youtube_dl/extractor/motorsport.py | 64 +-- youtube_dl/extractor/movieclips.py | 4 +- youtube_dl/extractor/mtv.py | 4 +- youtube_dl/extractor/myspace.py | 1 + youtube_dl/extractor/myspass.py | 5 +- youtube_dl/extractor/myvidster.py | 29 + youtube_dl/extractor/naver.py | 8 +- youtube_dl/extractor/nba.py | 17 +- youtube_dl/extractor/nbc.py | 42 +- youtube_dl/extractor/nerdcubed.py | 35 ++ youtube_dl/extractor/netzkino.py | 86 +++ youtube_dl/extractor/nfb.py | 14 +- youtube_dl/extractor/nfl.py | 4 +- youtube_dl/extractor/nhl.py | 22 +- youtube_dl/extractor/niconico.py | 10 +- youtube_dl/extractor/ninegag.py | 6 + youtube_dl/extractor/noco.py | 10 +- youtube_dl/extractor/normalboots.py | 6 +- youtube_dl/extractor/nosvideo.py | 7 +- youtube_dl/extractor/novamov.py | 4 +- youtube_dl/extractor/nowvideo.py | 2 +- youtube_dl/extractor/npo.py | 207 ++++++-- youtube_dl/extractor/nrk.py | 166 +++++- youtube_dl/extractor/ntv.py | 2 +- youtube_dl/extractor/nuvid.py | 9 +- youtube_dl/extractor/ooyala.py | 2 - youtube_dl/extractor/openfilm.py | 70 +++ youtube_dl/extractor/orf.py | 68 ++- youtube_dl/extractor/pbs.py | 16 +- youtube_dl/extractor/photobucket.py | 5 +- youtube_dl/extractor/played.py | 8 +- youtube_dl/extractor/playfm.py | 4 +- youtube_dl/extractor/playvid.py | 22 +- youtube_dl/extractor/pornhd.py | 20 +- youtube_dl/extractor/pornhub.py | 8 +- youtube_dl/extractor/pornotube.py | 102 ++-- youtube_dl/extractor/promptfile.py | 8 +- youtube_dl/extractor/prosiebensat1.py | 62 ++- youtube_dl/extractor/quickvid.py | 4 +- youtube_dl/extractor/radiobremen.py | 63 +++ youtube_dl/extractor/radiode.py | 55 ++ youtube_dl/extractor/rai.py | 4 +- youtube_dl/extractor/restudy.py | 40 ++ youtube_dl/extractor/rte.py | 62 +++ youtube_dl/extractor/rtlnl.py | 2 +- youtube_dl/extractor/rtp.py | 60 +++ youtube_dl/extractor/rts.py | 52 +- youtube_dl/extractor/rutube.py | 48 +- youtube_dl/extractor/screencast.py | 11 +- youtube_dl/extractor/screencastomatic.py | 49 ++ .../{cinemassacre.py => screenwavemedia.py} | 166 ++++-- youtube_dl/extractor/sexykarma.py | 5 +- youtube_dl/extractor/shared.py | 38 +- youtube_dl/extractor/sharesix.py | 4 +- youtube_dl/extractor/sina.py | 2 +- youtube_dl/extractor/slideshare.py | 8 +- youtube_dl/extractor/smotri.py | 70 ++- youtube_dl/extractor/sockshare.py | 13 +- youtube_dl/extractor/sohu.py | 96 ++-- youtube_dl/extractor/soulanime.py | 80 +++ youtube_dl/extractor/soundcloud.py | 7 +- youtube_dl/extractor/spankwire.py | 8 +- youtube_dl/extractor/spiegel.py | 49 +- youtube_dl/extractor/sportdeutschland.py | 7 +- youtube_dl/extractor/streamcloud.py | 6 +- youtube_dl/extractor/streamcz.py | 78 ++- youtube_dl/extractor/sunporno.py | 18 +- youtube_dl/extractor/tagesschau.py | 111 ++-- youtube_dl/extractor/tapely.py | 6 +- youtube_dl/extractor/teachertube.py | 4 +- youtube_dl/extractor/ted.py | 11 +- youtube_dl/extractor/telecinco.py | 2 +- youtube_dl/extractor/teletask.py | 53 ++ youtube_dl/extractor/tenplay.py | 1 - youtube_dl/extractor/tf1.py | 24 +- youtube_dl/extractor/theplatform.py | 23 +- youtube_dl/extractor/tlc.py | 2 +- youtube_dl/extractor/tmz.py | 2 +- youtube_dl/extractor/tnaflix.py | 6 +- youtube_dl/extractor/tube8.py | 4 +- youtube_dl/extractor/tudou.py | 19 +- youtube_dl/extractor/tunein.py | 15 +- youtube_dl/extractor/tutv.py | 8 +- youtube_dl/extractor/tvigle.py | 31 +- youtube_dl/extractor/tvp.py | 141 ++++- youtube_dl/extractor/tvplay.py | 5 +- youtube_dl/extractor/twentyfourvideo.py | 109 ++++ youtube_dl/extractor/twitch.py | 60 +++ youtube_dl/extractor/udemy.py | 9 +- youtube_dl/extractor/urort.py | 47 +- youtube_dl/extractor/ustream.py | 2 +- youtube_dl/extractor/vbox7.py | 12 +- youtube_dl/extractor/veehd.py | 59 ++- youtube_dl/extractor/veoh.py | 4 +- youtube_dl/extractor/vevo.py | 4 +- youtube_dl/extractor/vgtv.py | 4 +- youtube_dl/extractor/videodetective.py | 9 +- youtube_dl/extractor/videomega.py | 29 +- youtube_dl/extractor/vier.py | 118 +++++ youtube_dl/extractor/viki.py | 4 +- youtube_dl/extractor/vimple.py | 23 +- youtube_dl/extractor/vine.py | 54 +- youtube_dl/extractor/vk.py | 19 +- youtube_dl/extractor/vodlocker.py | 6 +- youtube_dl/extractor/vube.py | 4 +- youtube_dl/extractor/vuclip.py | 9 +- youtube_dl/extractor/washingtonpost.py | 11 +- youtube_dl/extractor/wdr.py | 36 +- youtube_dl/extractor/webofstories.py | 102 ++++ youtube_dl/extractor/wistia.py | 8 +- youtube_dl/extractor/xbef.py | 9 +- youtube_dl/extractor/xboxclips.py | 26 +- youtube_dl/extractor/xhamster.py | 11 +- youtube_dl/extractor/xminus.py | 9 + youtube_dl/extractor/xnxx.py | 9 +- youtube_dl/extractor/xtube.py | 70 ++- youtube_dl/extractor/xvideos.py | 22 +- youtube_dl/extractor/xxxymovies.py | 81 +++ youtube_dl/extractor/yahoo.py | 59 ++- youtube_dl/extractor/yesjapan.py | 62 +++ youtube_dl/extractor/ynet.py | 2 +- youtube_dl/extractor/youporn.py | 9 +- youtube_dl/extractor/youtube.py | 401 ++++++++------ youtube_dl/extractor/zdf.py | 52 +- youtube_dl/options.py | 89 +++- youtube_dl/postprocessor/__init__.py | 11 +- youtube_dl/postprocessor/execafterdownload.py | 2 +- youtube_dl/postprocessor/ffmpeg.py | 64 ++- youtube_dl/swfinterp.py | 2 +- youtube_dl/update.py | 14 +- youtube_dl/utils.py | 201 +++++-- youtube_dl/version.py | 2 +- 290 files changed, 8562 insertions(+), 2418 deletions(-) create mode 100755 devscripts/make_contributing.py create mode 100644 devscripts/make_supportedsites.py create mode 100644 docs/supportedsites.md delete mode 100644 test/test_write_info_json.py create mode 100644 youtube_dl/extractor/adobetv.py create mode 100644 youtube_dl/extractor/aljazeera.py create mode 100644 youtube_dl/extractor/alphaporno.py create mode 100644 youtube_dl/extractor/atresplayer.py create mode 100644 youtube_dl/extractor/atttechchannel.py create mode 100644 youtube_dl/extractor/azubu.py create mode 100644 youtube_dl/extractor/bet.py create mode 100644 youtube_dl/extractor/cinchcast.py create mode 100644 youtube_dl/extractor/collegerama.py create mode 100644 youtube_dl/extractor/comcarcoff.py create mode 100644 youtube_dl/extractor/commonmistakes.py create mode 100644 youtube_dl/extractor/drbonanza.py create mode 100644 youtube_dl/extractor/dvtv.py create mode 100644 youtube_dl/extractor/echomsk.py create mode 100644 youtube_dl/extractor/eroprofile.py create mode 100644 youtube_dl/extractor/foxgay.py create mode 100644 youtube_dl/extractor/foxnews.py create mode 100644 youtube_dl/extractor/giantbomb.py create mode 100644 youtube_dl/extractor/giga.py create mode 100644 youtube_dl/extractor/groupon.py create mode 100644 youtube_dl/extractor/hellporno.py create mode 100644 youtube_dl/extractor/hitbox.py create mode 100644 youtube_dl/extractor/karaoketv.py create mode 100644 youtube_dl/extractor/lnkgo.py create mode 100644 youtube_dl/extractor/minhateca.py create mode 100644 youtube_dl/extractor/myvidster.py create mode 100644 youtube_dl/extractor/nerdcubed.py create mode 100644 youtube_dl/extractor/netzkino.py create mode 100644 youtube_dl/extractor/openfilm.py create mode 100644 youtube_dl/extractor/radiobremen.py create mode 100644 youtube_dl/extractor/radiode.py create mode 100644 youtube_dl/extractor/restudy.py create mode 100644 youtube_dl/extractor/rte.py create mode 100644 youtube_dl/extractor/rtp.py create mode 100644 youtube_dl/extractor/screencastomatic.py rename youtube_dl/extractor/{cinemassacre.py => screenwavemedia.py} (50%) create mode 100644 youtube_dl/extractor/soulanime.py create mode 100644 youtube_dl/extractor/teletask.py create mode 100644 youtube_dl/extractor/twentyfourvideo.py create mode 100644 youtube_dl/extractor/vier.py create mode 100644 youtube_dl/extractor/webofstories.py create mode 100644 youtube_dl/extractor/xxxymovies.py create mode 100644 youtube_dl/extractor/yesjapan.py diff --git a/Makefile b/Makefile index 3e1debc..5780798 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ -all: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish +all: youtube-dl README.md CONTRIBUTING.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish supportedsites clean: - rm -rf youtube-dl.1.temp.md youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz youtube-dl.zsh youtube-dl.fish *.dump *.part + rm -rf youtube-dl.1.temp.md youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz youtube-dl.zsh youtube-dl.fish *.dump *.part *.info.json CONTRIBUTING.md.tmp cleanall: clean rm -f youtube-dl youtube-dl.exe @@ -35,13 +35,22 @@ install: youtube-dl youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtu install -d $(DESTDIR)$(SYSCONFDIR)/fish/completions install -m 644 youtube-dl.fish $(DESTDIR)$(SYSCONFDIR)/fish/completions/youtube-dl.fish +codetest: + flake8 . + test: #nosetests --with-coverage --cover-package=youtube_dl --cover-html --verbose --processes 4 test nosetests --verbose test + $(MAKE) codetest + +ot: offlinetest + +offlinetest: codetest + nosetests --verbose test --exclude test_download --exclude test_age_restriction --exclude test_subtitles --exclude test_write_annotations --exclude test_youtube_lists tar: youtube-dl.tar.gz -.PHONY: all clean install test tar bash-completion pypi-files zsh-completion fish-completion +.PHONY: all clean install test tar bash-completion pypi-files zsh-completion fish-completion ot offlinetest codetest supportedsites pypi-files: youtube-dl.bash-completion README.txt youtube-dl.1 youtube-dl.fish @@ -54,7 +63,13 @@ youtube-dl: youtube_dl/*.py youtube_dl/*/*.py chmod a+x youtube-dl README.md: youtube_dl/*.py youtube_dl/*/*.py - COLUMNS=80 python -m youtube_dl --help | python devscripts/make_readme.py + COLUMNS=80 python youtube_dl/__main__.py --help | python devscripts/make_readme.py + +CONTRIBUTING.md: README.md + python devscripts/make_contributing.py README.md CONTRIBUTING.md + +supportedsites: + python devscripts/make_supportedsites.py docs/supportedsites.md README.txt: README.md pandoc -f markdown -t plain README.md -o README.txt diff --git a/README.md b/README.md index d6e7ff9..078e9df 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ youtube-dl - download videos from youtube.com or other video platforms -# SYNOPSIS -**youtube-dl** [OPTIONS] URL [URL...] +- [INSTALLATION](#installation) +- [DESCRIPTION](#description) +- [OPTIONS](#options) +- [CONFIGURATION](#configuration) +- [OUTPUT TEMPLATE](#output-template) +- [VIDEO SELECTION](#video-selection) +- [FAQ](#faq) +- [DEVELOPER INSTRUCTIONS](#developer-instructions) +- [BUGS](#bugs) +- [COPYRIGHT](#copyright) # INSTALLATION @@ -34,6 +42,8 @@ YouTube.com and a few more sites. It requires the Python interpreter, version your Unix box, on Windows or on Mac OS X. It is released to the public domain, which means you can modify it, redistribute it or use it however you like. + youtube-dl [OPTIONS] URL [URL...] + # OPTIONS -h, --help print this help text and exit --version print program version and exit @@ -50,10 +60,6 @@ which means you can modify it, redistribute it or use it however you like. they would handle --extractor-descriptions Output descriptions of all supported extractors - --proxy URL Use the specified HTTP/HTTPS proxy. Pass in - an empty string (--proxy "") for direct - connection - --socket-timeout None Time to wait before giving up, in seconds --default-search PREFIX Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube-dl "large @@ -65,13 +71,25 @@ which means you can modify it, redistribute it or use it however you like. this is not possible instead of searching. --ignore-config Do not read configuration files. When given in the global configuration file /etc - /youtube-dl.conf: do not read the user - configuration in ~/.config/youtube-dl.conf - (%APPDATA%/youtube-dl/config.txt on - Windows) + /youtube-dl.conf: Do not read the user + configuration in ~/.config/youtube- + dl/config (%APPDATA%/youtube-dl/config.txt + on Windows) --flat-playlist Do not extract the videos of a playlist, only list them. +## Network Options: + --proxy URL Use the specified HTTP/HTTPS proxy. Pass in + an empty string (--proxy "") for direct + connection + --socket-timeout SECONDS Time to wait before giving up, in seconds + --source-address IP Client-side IP address to bind to + (experimental) + -4, --force-ipv4 Make all connections via IPv4 + (experimental) + -6, --force-ipv6 Make all connections via IPv6 + (experimental) + ## Video Selection: --playlist-start NUMBER playlist video to start at (default is 1) --playlist-end NUMBER playlist video to end at (default is last) @@ -113,12 +131,12 @@ which means you can modify it, redistribute it or use it however you like. size. By default, the buffer size is automatically resized from an initial value of SIZE. + --playlist-reverse Download playlist videos in reverse order ## Filesystem Options: -a, --batch-file FILE file containing URLs to download ('-' for stdin) --id use only video ID in file name - -A, --auto-number number downloaded files starting from 00000 -o, --output TEMPLATE output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(uploader_id)s for the @@ -152,6 +170,9 @@ which means you can modify it, redistribute it or use it however you like. --restrict-filenames Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames + -A, --auto-number [deprecated; use -o + "%(autonumber)s-%(title)s.%(ext)s" ] number + downloaded files starting from 00000 -t, --title [deprecated] use title in file name (default) -l, --literal [deprecated] alias of --title @@ -206,6 +227,8 @@ which means you can modify it, redistribute it or use it however you like. for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line. + --print-json Be quiet and print the video information as + JSON (video is still being downloaded). --newline output progress bar as new lines --no-progress do not print progress bar --console-title display progress in console titlebar @@ -216,6 +239,10 @@ which means you can modify it, redistribute it or use it however you like. files in the current directory to debug problems --print-traffic Display sent and read HTTP traffic + -C, --call-home Contact the youtube-dl server for + debugging. + --no-call-home Do NOT contact the youtube-dl server for + debugging. ## Workarounds: --encoding ENCODING Force the specified encoding (experimental) @@ -235,14 +262,15 @@ which means you can modify it, redistribute it or use it however you like. ## Video Format Options: -f, --format FORMAT video format code, specify the order of - preference using slashes: -f 22/17/18 . -f - mp4 , -f m4a and -f flv are also - supported. You can also use the special - names "best", "bestvideo", "bestaudio", - "worst", "worstvideo" and "worstaudio". By - default, youtube-dl will pick the best - quality. Use commas to download multiple - audio formats, such as -f + preference using slashes, as in -f 22/17/18 + . Instead of format codes, you can select + by extension for the extensions aac, m4a, + mp3, mp4, ogg, wav, webm. You can also use + the special names "best", "bestvideo", + "bestaudio", "worst". By default, youtube- + dl will pick the best quality. Use commas + to download multiple audio formats, such as + -f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can merge the video and audio of two formats into a single file using -f \youtube-dl.conf`. +You can configure youtube-dl by placing default arguments (such as `--extract-audio --no-mtime` to always extract the audio and not copy the mtime) into `/etc/youtube-dl.conf` and/or `~/.config/youtube-dl/config`. On Windows, the configuration file locations are `%APPDATA%\youtube-dl\config.txt` and `C:\Users\\youtube-dl.conf`. # OUTPUT TEMPLATE @@ -407,9 +444,15 @@ Apparently YouTube requires you to pass a CAPTCHA test if you download too much. Once the video is fully downloaded, use any video player, such as [vlc](http://www.videolan.org) or [mplayer](http://www.mplayerhq.hu/). -### The links provided by youtube-dl -g are not working anymore +### I extracted a video URL with -g, but it does not play on another machine / in my webbrowser. + +It depends a lot on the service. In many cases, requests for the video (to download/play it) must come from the same IP address and with the same cookies. Use the `--cookies` option to write the required cookies into a file, and advise your downloader to read cookies from that file. Some sites also require a common user agent to be used, use `--dump-user-agent` to see the one in use by youtube-dl. + +It may be beneficial to use IPv6; in some cases, the restrictions are only applied to IPv4. Some services (sometimes only for a subset of videos) do not restrict the video URL by IP address, cookie, or user-agent, but these are the exception rather than the rule. -The URLs youtube-dl outputs require the downloader to have the correct cookies. Use the `--cookies` option to write the required cookies into a file, and advise your downloader to read cookies from that file. Some sites also require a common user agent to be used, use `--dump-user-agent` to see the one in use by youtube-dl. +Please bear in mind that some URL protocols are **not** supported by browsers out of the box, including RTMP. If you are using -g, your own downloader must support these as well. + +If you want to play the video on a machine that is not running youtube-dl, you can relay the video content from the machine that runs youtube-dl. You can use `-o -` to let youtube-dl stream a video to stdout, or simply allow the player to download the files written by youtube-dl in turn. ### ERROR: no fmt_url_map or conn information found in video info @@ -436,6 +479,22 @@ Since June 2012 (#342) youtube-dl is packed as an executable zipfile, simply unz To run the exe you need to install first the [Microsoft Visual C++ 2008 Redistributable Package](http://www.microsoft.com/en-us/download/details.aspx?id=29). +### On Windows, how should I set up ffmpeg and youtube-dl? Where should I put the exe files? + +If you put youtube-dl and ffmpeg in the same directory that you're running the command from, it will work, but that's rather cumbersome. + +To make a different directory work - either for ffmpeg, or for youtube-dl, or for both - simply create the directory (say, `C:\bin`, or `C:\Users\\bin`), put all the executables directly in there, and then [set your PATH environment variable](https://www.java.com/en/download/help/path.xml) to include that directory. + +From then on, after restarting your shell, you will be able to access both youtube-dl and ffmpeg (and youtube-dl will be able to find ffmpeg) by simply typing `youtube-dl` or `ffmpeg`, no matter what directory you're in. + +### How can I detect whether a given URL is supported by youtube-dl? + +For one, have a look at the [list of supported sites](docs/supportedsites). Note that it can sometimes happen that the site changes its URL scheme (say, from http://example.com/v/1234567 to http://example.com/v/1234567 ) and youtube-dl reports an URL of a service in that list as unsupported. In that case, simply report a bug. + +It is *not* possible to detect whether a URL is supported or not. That's because youtube-dl contains a generic extractor which matches **all** URLs. You may be tempted to disable, exclude, or remove the generic extractor, but the generic extractor not only allows users to extract videos from lots of websites that embed a video from another service, but may also be used to extract video from a service that it's hosting itself. Therefore, we neither recommend nor support disabling, excluding, or removing the generic extractor. + +If you want to find out whether a given URL is supported, simply call youtube-dl with it. If you get no videos back, chances are the URL is either not referring to a video or unsupported. You can find out which by examining the output (if you run youtube-dl on the console) or catching an `UnsupportedError` exception if you run it from a Python program. + # DEVELOPER INSTRUCTIONS Most users do not need to build youtube-dl and can [download the builds](http://rg3.github.io/youtube-dl/download.html) or get them from their distribution. @@ -526,23 +585,61 @@ youtube-dl makes the best effort to be a good command-line program, and thus sho From a Python program, you can embed youtube-dl in a more powerful fashion, like this: - import youtube_dl +```python +import youtube_dl - ydl_opts = {} - with youtube_dl.YoutubeDL(ydl_opts) as ydl: - ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +ydl_opts = {} +with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +``` Most likely, you'll want to use various options. For a list of what can be done, have a look at [youtube_dl/YoutubeDL.py](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L69). For a start, if you want to intercept youtube-dl's output, set a `logger` object. +Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file: + +```python +import youtube_dl + + +class MyLogger(object): + def debug(self, msg): + pass + + def warning(self, msg): + pass + + def error(self, msg): + print(msg) + + +def my_hook(d): + if d['status'] == 'finished': + print('Done downloading, now converting ...') + + +ydl_opts = { + 'format': 'bestaudio/best', + 'postprocessors': [{ + 'key': 'FFmpegExtractAudio', + 'preferredcodec': 'mp3', + 'preferredquality': '192', + }], + 'logger': MyLogger(), + 'progress_hooks': [my_hook], +} +with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +``` + # BUGS -Bugs and suggestions should be reported at: . Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. +Bugs and suggestions should be reported at: . Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in the irc channel #youtube-dl on freenode. -Please include the full output of the command when run with `--verbose`. The output (including the first lines) contain important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. +**Please include the full output of youtube-dl when run with `-v`**. -For discussions, join us in the irc channel #youtube-dl on freenode. +The output (including the first lines) contain important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. -When you submit a request, please re-read it once to avoid a couple of mistakes (you can and should use this as a checklist): +Please re-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist): ### Is the description of the issue itself sufficient? diff --git a/README.txt b/README.txt index 601fe9a..5e2e5f7 100644 --- a/README.txt +++ b/README.txt @@ -1,9 +1,15 @@ youtube-dl - download videos from youtube.com or other video platforms -SYNOPSIS -======== - -youtube-dl OPTIONS URL [URL...] +- INSTALLATION +- DESCRIPTION +- OPTIONS +- CONFIGURATION +- OUTPUT TEMPLATE +- VIDEO SELECTION +- FAQ +- DEVELOPER INSTRUCTIONS +- BUGS +- COPYRIGHT INSTALLATION ============ @@ -44,6 +50,8 @@ work on your Unix box, on Windows or on Mac OS X. It is released to the public domain, which means you can modify it, redistribute it or use it however you like. + youtube-dl [OPTIONS] URL [URL...] + OPTIONS ======= @@ -62,10 +70,6 @@ OPTIONS they would handle --extractor-descriptions Output descriptions of all supported extractors - --proxy URL Use the specified HTTP/HTTPS proxy. Pass in - an empty string (--proxy "") for direct - connection - --socket-timeout None Time to wait before giving up, in seconds --default-search PREFIX Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube-dl "large @@ -77,13 +81,27 @@ OPTIONS this is not possible instead of searching. --ignore-config Do not read configuration files. When given in the global configuration file /etc - /youtube-dl.conf: do not read the user - configuration in ~/.config/youtube-dl.conf - (%APPDATA%/youtube-dl/config.txt on - Windows) + /youtube-dl.conf: Do not read the user + configuration in ~/.config/youtube- + dl/config (%APPDATA%/youtube-dl/config.txt + on Windows) --flat-playlist Do not extract the videos of a playlist, only list them. +Network Options: +---------------- + + --proxy URL Use the specified HTTP/HTTPS proxy. Pass in + an empty string (--proxy "") for direct + connection + --socket-timeout SECONDS Time to wait before giving up, in seconds + --source-address IP Client-side IP address to bind to + (experimental) + -4, --force-ipv4 Make all connections via IPv4 + (experimental) + -6, --force-ipv6 Make all connections via IPv6 + (experimental) + Video Selection: ---------------- @@ -129,6 +147,7 @@ Download Options: size. By default, the buffer size is automatically resized from an initial value of SIZE. + --playlist-reverse Download playlist videos in reverse order Filesystem Options: ------------------- @@ -136,7 +155,6 @@ Filesystem Options: -a, --batch-file FILE file containing URLs to download ('-' for stdin) --id use only video ID in file name - -A, --auto-number number downloaded files starting from 00000 -o, --output TEMPLATE output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(uploader_id)s for the @@ -170,6 +188,9 @@ Filesystem Options: --restrict-filenames Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames + -A, --auto-number [deprecated; use -o + "%(autonumber)s-%(title)s.%(ext)s" ] number + downloaded files starting from 00000 -t, --title [deprecated] use title in file name (default) -l, --literal [deprecated] alias of --title @@ -226,6 +247,8 @@ Verbosity / Simulation Options: for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line. + --print-json Be quiet and print the video information as + JSON (video is still being downloaded). --newline output progress bar as new lines --no-progress do not print progress bar --console-title display progress in console titlebar @@ -236,6 +259,10 @@ Verbosity / Simulation Options: files in the current directory to debug problems --print-traffic Display sent and read HTTP traffic + -C, --call-home Contact the youtube-dl server for + debugging. + --no-call-home Do NOT contact the youtube-dl server for + debugging. Workarounds: ------------ @@ -259,14 +286,15 @@ Video Format Options: --------------------- -f, --format FORMAT video format code, specify the order of - preference using slashes: -f 22/17/18 . -f - mp4 , -f m4a and -f flv are also - supported. You can also use the special - names "best", "bestvideo", "bestaudio", - "worst", "worstvideo" and "worstaudio". By - default, youtube-dl will pick the best - quality. Use commas to download multiple - audio formats, such as -f + preference using slashes, as in -f 22/17/18 + . Instead of format codes, you can select + by extension for the extensions aac, m4a, + mp3, mp4, ogg, wav, webm. You can also use + the special names "best", "bestvideo", + "bestaudio", "worst". By default, youtube- + dl will pick the best quality. Use commas + to download multiple audio formats, such as + -f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can merge the video and audio of two formats into a single file using -f \youtube-dl.conf. +%APPDATA%\youtube-dl\config.txt and +C:\Users\\youtube-dl.conf. OUTPUT TEMPLATE =============== @@ -497,13 +535,29 @@ I have downloaded a video but how can I play it? Once the video is fully downloaded, use any video player, such as vlc or mplayer. -The links provided by youtube-dl -g are not working anymore +I extracted a video URL with -g, but it does not play on another machine / in my webbrowser. + +It depends a lot on the service. In many cases, requests for the video +(to download/play it) must come from the same IP address and with the +same cookies. Use the --cookies option to write the required cookies +into a file, and advise your downloader to read cookies from that file. +Some sites also require a common user agent to be used, use +--dump-user-agent to see the one in use by youtube-dl. + +It may be beneficial to use IPv6; in some cases, the restrictions are +only applied to IPv4. Some services (sometimes only for a subset of +videos) do not restrict the video URL by IP address, cookie, or +user-agent, but these are the exception rather than the rule. -The URLs youtube-dl outputs require the downloader to have the correct -cookies. Use the --cookies option to write the required cookies into a -file, and advise your downloader to read cookies from that file. Some -sites also require a common user agent to be used, use --dump-user-agent -to see the one in use by youtube-dl. +Please bear in mind that some URL protocols are not supported by +browsers out of the box, including RTMP. If you are using -g, your own +downloader must support these as well. + +If you want to play the video on a machine that is not running +youtube-dl, you can relay the video content from the machine that runs +youtube-dl. You can use -o - to let youtube-dl stream a video to stdout, +or simply allow the player to download the files written by youtube-dl +in turn. ERROR: no fmt_url_map or conn information found in video info @@ -540,6 +594,45 @@ The exe throws a Runtime error from Visual C++ To run the exe you need to install first the Microsoft Visual C++ 2008 Redistributable Package. +On Windows, how should I set up ffmpeg and youtube-dl? Where should I put the exe files? + +If you put youtube-dl and ffmpeg in the same directory that you're +running the command from, it will work, but that's rather cumbersome. + +To make a different directory work - either for ffmpeg, or for +youtube-dl, or for both - simply create the directory (say, C:\bin, or +C:\Users\\bin), put all the executables directly in there, +and then set your PATH environment variable to include that directory. + +From then on, after restarting your shell, you will be able to access +both youtube-dl and ffmpeg (and youtube-dl will be able to find ffmpeg) +by simply typing youtube-dl or ffmpeg, no matter what directory you're +in. + +How can I detect whether a given URL is supported by youtube-dl? + +For one, have a look at the list of supported sites. Note that it can +sometimes happen that the site changes its URL scheme (say, from +http://example.com/v/1234567 to http://example.com/v/1234567 ) and +youtube-dl reports an URL of a service in that list as unsupported. In +that case, simply report a bug. + +It is not possible to detect whether a URL is supported or not. That's +because youtube-dl contains a generic extractor which matches all URLs. +You may be tempted to disable, exclude, or remove the generic extractor, +but the generic extractor not only allows users to extract videos from +lots of websites that embed a video from another service, but may also +be used to extract video from a service that it's hosting itself. +Therefore, we neither recommend nor support disabling, excluding, or +removing the generic extractor. + +If you want to find out whether a given URL is supported, simply call +youtube-dl with it. If you get no videos back, chances are the URL is +either not referring to a video or unsupported. You can find out which +by examining the output (if you run youtube-dl on the console) or +catching an UnsupportedError exception if you run it from a Python +program. + DEVELOPER INSTRUCTIONS ====================== @@ -654,32 +747,72 @@ any problems parsing its output, feel free to create a report. From a Python program, you can embed youtube-dl in a more powerful fashion, like this: - import youtube_dl +``` {.python} +import youtube_dl - ydl_opts = {} - with youtube_dl.YoutubeDL(ydl_opts) as ydl: - ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +ydl_opts = {} +with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +``` Most likely, you'll want to use various options. For a list of what can be done, have a look at youtube_dl/YoutubeDL.py. For a start, if you want to intercept youtube-dl's output, set a logger object. +Here's a more complete example of a program that outputs only errors +(and a short message after the download is finished), and +downloads/converts the video to an mp3 file: + +``` {.python} +import youtube_dl + + +class MyLogger(object): + def debug(self, msg): + pass + + def warning(self, msg): + pass + + def error(self, msg): + print(msg) + + +def my_hook(d): + if d['status'] == 'finished': + print('Done downloading, now converting ...') + + +ydl_opts = { + 'format': 'bestaudio/best', + 'postprocessors': [{ + 'key': 'FFmpegExtractAudio', + 'preferredcodec': 'mp3', + 'preferredquality': '192', + }], + 'logger': MyLogger(), + 'progress_hooks': [my_hook], +} +with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) +``` + BUGS ==== Bugs and suggestions should be reported at: https://github.com/rg3/youtube-dl/issues . Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the -bug report), please do not send bug reports via personal email. +bug report), please do not send bug reports via personal email. For +discussions, join us in the irc channel #youtube-dl on freenode. + +Please include the full output of youtube-dl when run with -v. -Please include the full output of the command when run with --verbose. The output (including the first lines) contain important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. -For discussions, join us in the irc channel #youtube-dl on freenode. - -When you submit a request, please re-read it once to avoid a couple of +Please re-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist): Is the description of the issue itself sufficient? diff --git a/devscripts/gh-pages/update-sites.py b/devscripts/gh-pages/update-sites.py index f0f0481..d3ef5f0 100755 --- a/devscripts/gh-pages/update-sites.py +++ b/devscripts/gh-pages/update-sites.py @@ -16,7 +16,7 @@ def main(): template = tmplf.read() ie_htmls = [] - for ie in sorted(youtube_dl.gen_extractors(), key=lambda i: i.IE_NAME.lower()): + for ie in youtube_dl.list_extractors(age_limit=None): ie_html = '{}'.format(ie.IE_NAME) ie_desc = getattr(ie, 'IE_DESC', None) if ie_desc is False: diff --git a/devscripts/make_contributing.py b/devscripts/make_contributing.py new file mode 100755 index 0000000..5e454a4 --- /dev/null +++ b/devscripts/make_contributing.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +from __future__ import unicode_literals + +import io +import optparse +import re + + +def main(): + parser = optparse.OptionParser(usage='%prog INFILE OUTFILE') + options, args = parser.parse_args() + if len(args) != 2: + parser.error('Expected an input and an output filename') + + infile, outfile = args + + with io.open(infile, encoding='utf-8') as inf: + readme = inf.read() + + bug_text = re.search( + r'(?s)#\s*BUGS\s*[^\n]*\s*(.*?)#\s*COPYRIGHT', readme).group(1) + dev_text = re.search( + r'(?s)(#\s*DEVELOPER INSTRUCTIONS.*?)#\s*EMBEDDING YOUTUBE-DL', + readme).group(1) + + out = bug_text + dev_text + + with io.open(outfile, 'w', encoding='utf-8') as outf: + outf.write(out) + +if __name__ == '__main__': + main() diff --git a/devscripts/make_supportedsites.py b/devscripts/make_supportedsites.py new file mode 100644 index 0000000..3df4385 --- /dev/null +++ b/devscripts/make_supportedsites.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +from __future__ import unicode_literals + +import io +import optparse +import os +import sys + + +# Import youtube_dl +ROOT_DIR = os.path.join(os.path.dirname(__file__), '..') +sys.path.append(ROOT_DIR) +import youtube_dl + + +def main(): + parser = optparse.OptionParser(usage='%prog OUTFILE.md') + options, args = parser.parse_args() + if len(args) != 1: + parser.error('Expected an output filename') + + outfile, = args + + def gen_ies_md(ies): + for ie in ies: + ie_md = '**{0}**'.format(ie.IE_NAME) + ie_desc = getattr(ie, 'IE_DESC', None) + if ie_desc is False: + continue + if ie_desc is not None: + ie_md += ': {0}'.format(ie.IE_DESC) + if not ie.working(): + ie_md += ' (Currently broken)' + yield ie_md + + ies = sorted(youtube_dl.gen_extractors(), key=lambda i: i.IE_NAME.lower()) + out = '# Supported sites\n' + ''.join( + ' - ' + md + '\n' + for md in gen_ies_md(ies)) + + with io.open(outfile, 'w', encoding='utf-8') as outf: + outf.write(out) + +if __name__ == '__main__': + main() diff --git a/devscripts/prepare_manpage.py b/devscripts/prepare_manpage.py index f66bebf..7ece377 100644 --- a/devscripts/prepare_manpage.py +++ b/devscripts/prepare_manpage.py @@ -11,8 +11,19 @@ README_FILE = os.path.join(ROOT_DIR, 'README.md') with io.open(README_FILE, encoding='utf-8') as f: readme = f.read() -PREFIX = '%YOUTUBE-DL(1)\n\n# NAME\n' -readme = re.sub(r'(?s)# INSTALLATION.*?(?=# DESCRIPTION)', '', readme) +PREFIX = '''%YOUTUBE-DL(1) + +# NAME + +youtube\-dl \- download videos from youtube.com or other video platforms + +# SYNOPSIS + +**youtube-dl** \[OPTIONS\] URL [URL...] + +''' +readme = re.sub(r'(?s)^.*?(?=# DESCRIPTION)', '', readme) +readme = re.sub(r'\s+youtube-dl \[OPTIONS\] URL \[URL\.\.\.\]', '', readme) readme = PREFIX + readme if sys.version_info < (3, 0): diff --git a/docs/supportedsites.md b/docs/supportedsites.md new file mode 100644 index 0000000..dbbf4a7 --- /dev/null +++ b/docs/supportedsites.md @@ -0,0 +1,500 @@ +# Supported sites + - **1up.com** + - **220.ro** + - **24video** + - **3sat** + - **4tube** + - **56.com** + - **5min** + - **8tracks** + - **9gag** + - **abc.net.au** + - **AcademicEarth:Course** + - **AddAnime** + - **AdobeTV** + - **AdultSwim** + - **Aftonbladet** + - **AlJazeera** + - **Allocine** + - **anitube.se** + - **AnySex** + - **Aparat** + - **AppleTrailers** + - **archive.org**: archive.org videos + - **ARD** + - **ARD:mediathek** + - **arte.tv** + - **arte.tv:+7** + - **arte.tv:concert** + - **arte.tv:creative** + - **arte.tv:ddc** + - **arte.tv:embed** + - **arte.tv:future** + - **audiomack** + - **AUEngine** + - **Azubu** + - **bambuser** + - **bambuser:channel** + - **Bandcamp** + - **Bandcamp:album** + - **bbc.co.uk**: BBC iPlayer + - **Beeg** + - **BehindKink** + - **Bet** + - **Bild**: Bild.de + - **BiliBili** + - **blinkx** + - **blip.tv:user** + - **BlipTV** + - **Bloomberg** + - **Bpb**: Bundeszentrale für politische Bildung + - **BR**: Bayerischer Rundfunk Mediathek + - **Break** + - **Brightcove** + - **BuzzFeed** + - **BYUtv** + - **Canal13cl** + - **canalc2.tv** + - **Canalplus**: canalplus.fr, piwiplus.fr and d8.tv + - **CBS** + - **CBSNews**: CBS News + - **CeskaTelevize** + - **channel9**: Channel 9 + - **Chilloutzone** + - **Cinchcast** + - **Cinemassacre** + - **clipfish** + - **cliphunter** + - **Clipsyndicate** + - **Cloudy** + - **Clubic** + - **cmt.com** + - **CNET** + - **CNN** + - **CNNBlogs** + - **CollegeHumor** + - **ComCarCoff** + - **ComedyCentral** + - **ComedyCentralShows**: The Daily Show / The Colbert Report + - **CondeNast**: Condé Nast media group: Condé Nast, GQ, Glamour, Vanity Fair, Vogue, W Magazine, WIRED + - **Cracked** + - **Criterion** + - **Crunchyroll** + - **crunchyroll:playlist** + - **CSpan**: C-SPAN + - **culturebox.francetvinfo.fr** + - **dailymotion** + - **dailymotion:playlist** + - **dailymotion:user** + - **daum.net** + - **DBTV** + - **DeezerPlaylist** + - **defense.gouv.fr** + - **Discovery** + - **divxstage**: DivxStage + - **Dotsub** + - **Dropbox** + - **DrTuber** + - **DRTV** + - **Dump** + - **dvtv**: http://video.aktualne.cz/ + - **EbaumsWorld** + - **eHow** + - **Einthusan** + - **eitb.tv** + - **EllenTV** + - **EllenTV:clips** + - **ElPais**: El País + - **EMPFlix** + - **Engadget** + - **Eporner** + - **Escapist** + - **EveryonesMixtape** + - **exfm**: ex.fm + - **ExpoTV** + - **ExtremeTube** + - **facebook** + - **faz.net** + - **fc2** + - **fernsehkritik.tv** + - **fernsehkritik.tv:postecke** + - **Firedrive** + - **Firstpost** + - **firsttv**: Видеоархив - Первый канал + - **Flickr** + - **Folketinget**: Folketinget (ft.dk; Danish parliament) + - **Foxgay** + - **FoxNews** + - **france2.fr:generation-quoi** + - **FranceCulture** + - **FranceInter** + - **francetv**: France 2, 3, 4, 5 and Ô + - **francetvinfo.fr** + - **Freesound** + - **freespeech.org** + - **FreeVideo** + - **FunnyOrDie** + - **Gamekings** + - **GameOne** + - **gameone:playlist** + - **GameSpot** + - **GameStar** + - **Gametrailers** + - **GDCVault** + - **generic**: Generic downloader that works on some sites + - **GiantBomb** + - **Glide**: Glide mobile video messages (glide.me) + - **Globo** + - **GodTube** + - **GoldenMoustache** + - **Golem** + - **GorillaVid**: GorillaVid.in, daclips.in, movpod.in and fastvideo.in + - **Goshgay** + - **Grooveshark** + - **Groupon** + - **Hark** + - **Heise** + - **Helsinki**: helsinki.fi + - **HentaiStigma** + - **HornBunny** + - **HostingBulk** + - **HotNewHipHop** + - **Howcast** + - **HowStuffWorks** + - **HuffPost**: Huffington Post + - **Hypem** + - **Iconosquare** + - **ign.com** + - **imdb**: Internet Movie Database trailers + - **imdb:list**: Internet Movie Database lists + - **Ina** + - **InfoQ** + - **Instagram** + - **instagram:user**: Instagram user profile + - **InternetVideoArchive** + - **IPrima** + - **ivi**: ivi.ru + - **ivi:compilation**: ivi.ru compilations + - **Izlesene** + - **JadoreCettePub** + - **JeuxVideo** + - **Jove** + - **jpopsuki.tv** + - **Jukebox** + - **Kankan** + - **keek** + - **KeezMovies** + - **KhanAcademy** + - **KickStarter** + - **kontrtube**: KontrTube.ru - Труба зовёт + - **KrasView**: Красвью + - **Ku6** + - **la7.tv** + - **Laola1Tv** + - **lifenews**: LIFE | NEWS + - **LiveLeak** + - **livestream** + - **livestream:original** + - **lrt.lt** + - **lynda**: lynda.com videos + - **lynda:course**: lynda.com online courses + - **m6** + - **macgamestore**: MacGameStore trailers + - **mailru**: Видео@Mail.Ru + - **Malemotion** + - **MDR** + - **metacafe** + - **Metacritic** + - **Mgoon** + - **Minhateca** + - **MinistryGrid** + - **mitele.es** + - **mixcloud** + - **MLB** + - **MoeVideo**: LetitBit video services: moevideo.net, playreplay.net and videochart.net + - **Mofosex** + - **Mojvideo** + - **Moniker**: allmyvideos.net and vidspot.net + - **mooshare**: Mooshare.biz + - **Morningstar**: morningstar.com + - **Motherless** + - **Motorsport**: motorsport.com + - **MovieClips** + - **Moviezine** + - **movshare**: MovShare + - **MPORA** + - **MTV** + - **mtviggy.com** + - **mtvservices:embedded** + - **MuenchenTV**: münchen.tv + - **MusicPlayOn** + - **MusicVault** + - **muzu.tv** + - **MySpace** + - **MySpace:album** + - **MySpass** + - **myvideo** + - **MyVidster** + - **Naver** + - **NBA** + - **NBC** + - **NBCNews** + - **ndr**: NDR.de - Mediathek + - **NDTV** + - **NerdCubedFeed** + - **Newgrounds** + - **Newstube** + - **nfb**: National Film Board of Canada + - **nfl.com** + - **nhl.com** + - **nhl.com:videocenter**: NHL videocenter category + - **niconico**: ニコニコ動画 + - **NiconicoPlaylist** + - **Noco** + - **Normalboots** + - **NosVideo** + - **novamov**: NovaMov + - **Nowness** + - **nowvideo**: NowVideo + - **npo.nl** + - **NRK** + - **NRKTV** + - **NTV** + - **Nuvid** + - **NYTimes** + - **ocw.mit.edu** + - **OktoberfestTV** + - **on.aol.com** + - **Ooyala** + - **orf:oe1**: Radio Österreich 1 + - **orf:tvthek**: ORF TVthek + - **ORFFM4**: radio FM4 + - **parliamentlive.tv**: UK parliament videos + - **Patreon** + - **PBS** + - **Phoenix** + - **Photobucket** + - **PlanetaPlay** + - **play.fm** + - **played.to** + - **Playvid** + - **plus.google**: Google Plus + - **pluzz.francetv.fr** + - **podomatic** + - **PornHd** + - **PornHub** + - **Pornotube** + - **PornoXO** + - **PromptFile** + - **prosiebensat1**: ProSiebenSat.1 Digital + - **Pyvideo** + - **QuickVid** + - **radio.de** + - **radiofrance** + - **Rai** + - **RBMARadio** + - **RedTube** + - **Restudy** + - **ReverbNation** + - **RingTV** + - **RottenTomatoes** + - **Roxwel** + - **RTBF** + - **RTLnow** + - **rtlxl.nl** + - **RTP** + - **RTS**: RTS.ch + - **rtve.es:alacarta**: RTVE a la carta + - **rtve.es:live**: RTVE.es live streams + - **RUHD** + - **rutube**: Rutube videos + - **rutube:channel**: Rutube channels + - **rutube:movie**: Rutube movies + - **rutube:person**: Rutube person videos + - **RUTV**: RUTV.RU + - **Sapo**: SAPO Vídeos + - **savefrom.net** + - **SBS**: sbs.com.au + - **SciVee** + - **screen.yahoo:search**: Yahoo screen search + - **Screencast** + - **ScreencastOMatic** + - **ScreenwaveMedia** + - **ServingSys** + - **Sexu** + - **SexyKarma**: Sexy Karma and Watch Indian Porn + - **Shared** + - **ShareSix** + - **Sina** + - **Slideshare** + - **Slutload** + - **smotri**: Smotri.com + - **smotri:broadcast**: Smotri.com broadcasts + - **smotri:community**: Smotri.com community videos + - **smotri:user**: Smotri.com user videos + - **Snotr** + - **Sockshare** + - **Sohu** + - **soundcloud** + - **soundcloud:playlist** + - **soundcloud:set** + - **soundcloud:user** + - **Soundgasm** + - **southpark.cc.com** + - **southpark.de** + - **Space** + - **Spankwire** + - **Spiegel** + - **Spiegel:Article**: Articles on spiegel.de + - **Spiegeltv** + - **Spike** + - **Sport5** + - **SportBox** + - **SportDeutschland** + - **SRMediathek**: Süddeutscher Rundfunk + - **stanfordoc**: Stanford Open ClassRoom + - **Steam** + - **streamcloud.eu** + - **StreamCZ** + - **SunPorno** + - **SWRMediathek** + - **Syfy** + - **SztvHu** + - **Tagesschau** + - **Tapely** + - **Tass** + - **teachertube**: teachertube.com videos + - **teachertube:user:collection**: teachertube.com user and collection videos + - **TeachingChannel** + - **Teamcoco** + - **TeamFour** + - **TechTalks** + - **techtv.mit.edu** + - **TED** + - **tegenlicht.vpro.nl** + - **TeleBruxelles** + - **telecinco.es** + - **TeleMB** + - **TenPlay** + - **TF1** + - **TheOnion** + - **ThePlatform** + - **TheSixtyOne** + - **ThisAV** + - **THVideo** + - **THVideoPlaylist** + - **tinypic**: tinypic.com videos + - **tlc.com** + - **tlc.de** + - **TMZ** + - **TNAFlix** + - **tou.tv** + - **Toypics**: Toypics user profile + - **ToypicsUser**: Toypics user profile + - **TrailerAddict** (Currently broken) + - **Trilulilu** + - **TruTube** + - **Tube8** + - **Tudou** + - **Tumblr** + - **TuneIn** + - **Turbo** + - **Tutv** + - **tv.dfb.de** + - **tvigle**: Интернет-телевидение Tvigle.ru + - **tvp.pl** + - **TVPlay**: TV3Play and related services + - **Twitch** + - **Ubu** + - **udemy** + - **udemy:course** + - **Unistra** + - **Urort**: NRK P3 Urørt + - **ustream** + - **ustream:channel** + - **Vbox7** + - **VeeHD** + - **Veoh** + - **Vesti**: Вести.Ru + - **Vevo** + - **VGTV** + - **vh1.com** + - **Vice** + - **Viddler** + - **video.google:search**: Google Video search + - **video.mit.edu** + - **VideoBam** + - **VideoDetective** + - **videofy.me** + - **videolectures.net** + - **VideoMega** + - **VideoPremium** + - **VideoTt**: video.tt - Your True Tube + - **videoweed**: VideoWeed + - **Vidme** + - **Vidzi** + - **viki** + - **vimeo** + - **vimeo:album** + - **vimeo:channel** + - **vimeo:group** + - **vimeo:likes**: Vimeo user likes + - **vimeo:review**: Review pages on vimeo + - **vimeo:user** + - **vimeo:watchlater**: Vimeo watch later list, "vimeowatchlater" keyword (requires authentication) + - **Vimple**: Vimple.ru + - **Vine** + - **vine:user** + - **vk.com** + - **vk.com:user-videos**: vk.com:All of a user's videos + - **Vodlocker** + - **Vporn** + - **VRT** + - **vube**: Vube.com + - **VuClip** + - **vulture.com** + - **Walla** + - **WashingtonPost** + - **wat.tv** + - **WayOfTheMaster** + - **WDR** + - **wdr:mobile** + - **WDRMaus**: Sendung mit der Maus + - **Weibo** + - **Wimp** + - **Wistia** + - **WorldStarHipHop** + - **wrzuta.pl** + - **XBef** + - **XboxClips** + - **XHamster** + - **XMinus** + - **XNXX** + - **XTube** + - **XTubeUser**: XTube user profile + - **XVideos** + - **Yahoo**: Yahoo screen and movies + - **YesJapan** + - **Ynet** + - **YouJizz** + - **Youku** + - **YouPorn** + - **YourUpload** + - **youtube**: YouTube.com + - **youtube:channel**: YouTube.com channels + - **youtube:favorites**: YouTube.com favourite videos, ":ytfav" for short (requires authentication) + - **youtube:history**: Youtube watch history, ":ythistory" for short (requires authentication) + - **youtube:playlist**: YouTube.com playlists + - **youtube:recommended**: YouTube.com recommended videos, ":ytrec" for short (requires authentication) + - **youtube:search**: YouTube.com searches + - **youtube:search:date**: YouTube.com searches, newest videos first + - **youtube:search_url**: YouTube.com search URLs + - **youtube:show**: YouTube.com (multi-season) shows + - **youtube:subscriptions**: YouTube.com subscriptions feed, "ytsubs" keyword (requires authentication) + - **youtube:toplist**: YouTube.com top lists, "yttoplist:{channel}:{list title}" (Example: "yttoplist:music:Top Tracks") + - **youtube:user**: YouTube.com user videos (URL or "ytuser" keyword) + - **youtube:watch_later**: Youtube watch later list, ":ytwatchlater" for short (requires authentication) + - **ZDF** + - **ZDFChannel** + - **zingmp3:album**: mp3.zing.vn albums + - **zingmp3:song**: mp3.zing.vn songs diff --git a/test/helper.py b/test/helper.py index 9a7f074..c416f38 100644 --- a/test/helper.py +++ b/test/helper.py @@ -82,24 +82,14 @@ class FakeYDL(YoutubeDL): def gettestcases(include_onlymatching=False): for ie in youtube_dl.extractor.gen_extractors(): - t = getattr(ie, '_TEST', None) - if t: - assert not hasattr(ie, '_TESTS'), \ - '%s has _TEST and _TESTS' % type(ie).__name__ - tests = [t] - else: - tests = getattr(ie, '_TESTS', []) - for t in tests: - if not include_onlymatching and t.get('only_matching', False): - continue - t['name'] = type(ie).__name__[:-len('IE')] - yield t + for tc in ie.get_testcases(include_onlymatching): + yield tc md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest() -def expect_info_dict(self, expected_dict, got_dict): +def expect_info_dict(self, got_dict, expected_dict): for info_field, expected in expected_dict.items(): if isinstance(expected, compat_str) and expected.startswith('re:'): got = got_dict.get(info_field) @@ -120,6 +110,20 @@ def expect_info_dict(self, expected_dict, got_dict): else: if isinstance(expected, compat_str) and expected.startswith('md5:'): got = 'md5:' + md5(got_dict.get(info_field)) + elif isinstance(expected, compat_str) and expected.startswith('mincount:'): + got = got_dict.get(info_field) + self.assertTrue( + isinstance(got, list), + 'Expected field %s to be a list, but it is of type %s' % ( + info_field, type(got).__name__)) + expected_num = int(expected.partition(':')[2]) + assertGreaterEqual( + self, len(got), expected_num, + 'Expected %d items in field %s, but only got %d' % ( + expected_num, info_field, len(got) + ) + ) + continue else: got = got_dict.get(info_field) self.assertEqual(expected, got, @@ -161,7 +165,9 @@ def assertRegexpMatches(self, text, regexp, msg=None): else: m = re.match(regexp, text) if not m: - note = 'Regexp didn\'t match: %r not found in %r' % (regexp, text) + note = 'Regexp didn\'t match: %r not found' % (regexp) + if len(text) < 1000: + note += ' in %r' % text if msg is None: msg = note else: diff --git a/test/swftests/ArrayAccess.swf b/test/swftests/ArrayAccess.swf index 150b23dc4efb5cfa86186b104ca38532e0539a02..240fd6632ea59fd3b8a87dee190a0484bd2f6acc 100644 GIT binary patch delta 583 zcmV-N0=WI+1mFaJLswG{bprqZc-mc&%Wl&^6o$`u#&#McNL2*oCK;%d4T+t!ASFsI z0--<`MS>0Ls$+YcnEEDrOwtu>cn~DS1MmXfBNj=JV9$!TC^K$p0+w&*pZ|RReP#mW z7r@2O0P6?_tJeVF-P%_K(91l(`*N^jOrkK(yQ12zk2p^_yQVoFkDKGoW|9rfR;SZ3 zt+v^2H-w{+AH|$b8gYKNZkK=o%iSzUd62}0tf`X}e7jyhqk8T+k+>#*9MiX~;fFLI z^~{A)_V9p*%-ek5^^nHHf)1JeWUpL1ugi>-GkcfD#@0Qf zZME*7rjTOK{BPK2ir7DY8wR!CxCf7wlarJEDi#~8iHm3-_n|y)9vy$#6&wDo+Rrk2 z)OTH$=Wu+vBQ$Y>pV5f5paxCpu7X~Po)WCQkz=SNAMp1n9nwp9aVWI zSXd?MovAh30AK&`b2gv(l~3Z$B|>os)o1hX;wGFDt7?Mq90ZSu5cty6VsJpL1M(Vf Vjj)hwYjSkU1AQn4>OXob^O7@a8Q%Z^ delta 585 zcmV-P0=E6&1mXmLLswG{b^`zac-mc&&2G~`6ov12#&#McNL2&{gk+#nHY9e^s#2oV zA`lAQ6bUw{tB&n)V(LHH<0f6fh6h1HJOeu(02WD+V9$ydfNhy^Lldz4ch8*r`S{KR z$Pa+a9{|=73|4Od!0WZo2%wjFe)suc*O)|MoOeaFQy+0To_0-hJRUd4o6RH}nypT! zV_I#q-EIg+BR`2boiyV7UfnJM1D3m4kn$jj4OvqsDfmvkKBs!_1(CNVe;U(c*6>4` zk9y|9D0_IoLuU8A#9_v6$R@^?(O>kJ?sJPYdyAm<(r;4P-E@=4OtZu*T#?BasIqyv zMIzF|34?sZGP{V6;$(dOiG?aXZpJ82{&oD-3e z`$pSpZJo!EYR~*{+H*y0f1nM6+E3hrN6OjR*+CVH9oED}w08$k9)sV%KJJMf|5EK| z89nK{F3WTHbhRTiae|-Gh_#>wP3f+JTH3VzB63)EX{kqh=DcDqM?Q&Y5Z{@PaWTUF zi%qj_S=**l1R)P%EoAYKk1E&DI#EG|>!?z>NfaF;qH2o1q9a8|e^^IEN2-oB9qG4_ zj#g9|10fMjK}dncfiPK703#KF0!UlM2oa$nfkxtqr`8i`!kE;i*7PB~!QW128_KS# zJQXag67}xXnr(ouzx_Tto%xmb;>{&OaR}9Cr(eZQI3-rq1Yr*ZkBAWX%G6?TNUTHh X5^j&MkZWslbjt&M2O#P{)ZO&Ig|Hko diff --git a/test/swftests/ClassCall.swf b/test/swftests/ClassCall.swf index 8a194602cf79f94cc659e75629cf5735311444ce..8bdfe06c356790a1251904675a294c0e6e441af7 100644 GIT binary patch literal 582 zcmV-M0=fM|S5ppk0{{Sc+Fg;&Zqq;%h41{>CRtRiTA@^^k|iQ#Lt-bCMWV!_N(hhz zl~|!lNS)Y|*wnEtdrZQrJWAQ{0K7oOwyPA07huI(gt61cDI;6sg@K-FHV#wKtJUsO9eWcRrLmt!I<~=mKI4H%jAo-L zgB-gv3F8?P7K0vsyJ3ejBZ@;OwdG6`8I_y2Em=gAj(sn2d2FS@MG(%{pD3ysW5=9{ z@F8(u%lbYGrYW0p>(#rwx6%2GOmJ(&0{!@z-ZGmn)>CA~uJPYy-&N%KSuoiBOS;g< ztJUhPOymKp@}}yyGsxG^%j+K_dEhtYzTCy6&wL-Q4|=j9FPOw^#+$GUjf^b;@d8oW zfa>Y^6SqbARLCF9tB0FjgC*5wr|8g08rXEkyg+%3Dnx;b3YvznhKPo!MidQ6`AEx$ zLa#FO%-)%F5iL#N#UW=qLh~A?XRmUx{{>wfK;WCJXx9?&WU+WKERQS@88jp UOC_?ipG{qC=}W2p0Vqi7TO6An=>Px# literal 587 zcmV-R0<`@@S5ppl0{{Sc+Fg;&Zqq;%h41{>CRtRiTA@^^k|iQ#Lt;BrNQn}QDj`r7 zt;7mdLh8hxB&LpS+2bax;1zg-vf&xnv4>5H#0#+E1=t~lvD3yWBU|>l_dCbeGjpK7 z0Jc5@R1oxc_5tAi?so*xiQQ5ARezw*r+$#MrRvruLPTxDn9XL5+2ckSj}5EUY8htJ zXg2GTs3-3N!RGZKd04aafId&0*o%Z0270F1Fib_aR=Y`coporG#(o~@ItKUolm{X) ztcE3nT&Fz><0%t1iz451SQcl@>&YZ^E@teK*GE1}CLN;yGmr3u&+Q{O9CCf&^SOSg z9~J(bULhIm7K7RwzsWLp!wIKG6o+o=$eBhmDmQOhvWO@h`d%{Ov7H7NK{#7|qNrw! z6LTiQyTolR>-#Jir){Z0S>}{s9Iu>oD0U6iEO8 diff --git a/test/swftests/ClassConstruction.swf b/test/swftests/ClassConstruction.swf index 01b21414228d1fe0f16041f4c0bfe80d4342ebcb..576eb30da2cc21cf849c6ac9ca5ba15de5419c60 100644 GIT binary patch literal 555 zcmV+`0@VFOS5ppN0{{Sc+GSBqZqq;%e&ZS2v=XRQQ4~OxEKw;N;-63!iBgLyAwU)& zu|k!QIYGH~<&uo>hdz1z2&5Fm~FeB_mto_r4#0Gj9&$55S%8 z08IqL-FpD=Y40Zj=x6@4_hvXU=5dtdJy{*K0wL0#WtC-VmXA%I%`B(e?OJxn>U7$Y z(at|6g3jAX{;=iN21Ay6S(u8DCq`A%2`|J^t99Y(dsn7ukwvwo?^!HjF-t^lIi@3x ze6KgG9Y~Gwv6j%ruo&wfMTEvPg?b6y^cT+#)$kc)9w;x?6F)j8VaF zGA?@+9?@i0&>3@|y{fURy3R-ibH_9>4j&mE+j+7|Q8oM4f0upHk@It5xbqkHVW2FR z%ad&^2dv4LXx~ntUSGeQ{}{`G|JokNTg(SM$weklDqZ0GZbKsSfoVo#=D-e^mF5=U zFcG^O0`2wWJ@W(}aejXTG--a|^dv-L8YXH3HL(g!4Ky7oI>I_4I#zY0YjrFHn@dsf zmI4Y8yhVUWj=GBxmYbpw1cWF^1B5Wa3;Vf5k%GzXh5e3<34A8M58#EgK!~W?!d|=t tNx^G2xdEt>haW6#2B+9Q#cyFhP%gjGen2Fpu~$XhytAjW`wxlt>Zw)_24esK literal 555 zcmV+`0@VFOS5ppO0{{Sc+GSD8Zqq;%z2h0%v=XRQQ4~OxEKw;N;zy{E5~UVZLZB>) z#0phH>cpPJZf%cckL$34Utz;Hu!B9D2#FtH#TT#*W2bFeGO{(k_dI-N?hMFpfO}s6 znh1v54*=lf&JP68&-_X6?Qmqw;wZ^`vN~u5LZm&*D$CL=pPD?IT28mywd{`7>9i%I zoqtFKowbwvam%d@hAj88Fcl$BjH;$%UWkKM>(bTtu1(V-i)u^XvslDpmWbSPOh+2| zUT?y)m^Nxdo__hab&t2B+9Q#qVG@P_DkwZa^fZu~S7{zq9AE`wxPG>fh$G4)Fj0 diff --git a/test/swftests/ConstArrayAccess.swf b/test/swftests/ConstArrayAccess.swf index 70c5a7c93a84c3abb271722bc308e7de022ad0a5..0d902fd30f6775762bb0b454271649a273f05690 100644 GIT binary patch literal 628 zcmV-)0*n1aS5pp?0{{Sc+GSG9Zqq;%y))xSl2S-j9tDIHM5Sz+*iHjdqtqfa6sQD9 zAR$ztsuO!0n>u659+PwhKfp(@;RE=A?pdV^et;E!QO0iClrr+jy62vA=FYt{0p&Nq z)$af+2>MI60pRoUPXy3ST(9${zg?S*LY{VHv|0Csh&zTc9*>*j^=6a|4Qpd#!!TP$ ztJRQ^&5Q`wJQ%X*D=Y`rAu1Rxs(}_k#oJ4Ns$eKK9RfsQ2a*H?{ghA@F#LoBukH)7*%+Z|V zB#esaU&a}h=R?Ye867hF>8m1l9v3xI!R#H%YwfjK%d{SzR*{2U<5II{h@77d{pugm zg)Mw?a#8c5r5_;Hk9G0eVbp54F$Pc`Pj+g~i zXadIay#NWgs9qLmuLmEQBanwCm?mnGQARZ2xZP6L+m>~I*4lYndvDi`mT5jR23Zh_ zfNLS+L*bWhq7|Zo3b#<{${m7rf)rK5`ht$Ij);yF9jQ9ebfW91q@(g(R9-}CaUnF@ zXA5Cc#vlz4$e*eqgoq}+ptMAgM6pb$GEbD{skx`FVqe|U)+%cY@35~ulX_{OEKbeo z6ZnFE9d9e}9Ap<{K?_rJUt2|9*{et>H&ZpqdjV3VV0p~7smWlUnET{C-1D)7Z!G7f O{nzQo68sB3*YT`_3Nh6H literal 629 zcmV-*0*d`ZS5pp@0{{Sc+GSGBZqq;zp566Nl2T|@ehLUFh)TIMv7JVsMyW+;DD*&) zsDz-0svCP9n>u!|H%)qiSKtx2@DxZq0GIT@3vl8s%GgbtQdVAB^Ue2tJ3F&uP<{hk z{|2y3ptE=v06s1KBmk|%^_p)wTjg;-jM64X8x>#5LDMisqfu?NR*RFKVXd#P8)n_8 z*Q>~=rpJ-w<7$*Xs@S?3}g^TomPM>2qoG!5|DAp4l1WYU;<%;fNoJsu%LqZy7UUrjdaRh23`Jt|)JXVq9*N z+cSO6KBHu0cUGu<>6$!K*POU-43gL#I#`p3R=N1HB(oR{yJ3*}BC&_jVHA(fj+mht z$4La2@xP37EX#*H>J52M*w1(J+(n$%$fdA%;-j+lWVKv3t;Sgy8QLdIQfvK~%*JL_wEcg?7q=3}Ef z3_=-1S}3BP^b5DiGE+f?JEU;!9-}%VimFk4PA60+Oecy?RGn!$({)nNN%1}@&J#7i z5Si}tMJOv$Km!8!Q#C>e)6feFi;N&jF`;6fDN7S`UtOWTy05L4R_ESQUweUiG*IRz z=HwZCroT?M6nF{P1uST8VjgHK#4CCwgfcT#L*6!^N}+hnjfpAXfSCvE9X#+U!nc;P P(*Eo8Qw0A4|M2m)gnBPi diff --git a/test/swftests/ConstantInt.swf b/test/swftests/ConstantInt.swf index a81677c9c0b20ae1c4077b7ca2a2a108761132ec..b8bd0cb97124c000374cba1c8da50747718dab13 100644 GIT binary patch literal 519 zcmV+i0{HzyS5pr70ssJb+Feo0Zqq;%z4M5z771Dfp|U`-1X4C68WhN`orOnxdS#Bbd92$ zf0UY6U70`Zcul}WVI#SZ9F`ubIA9Xs{seykJnig5yLPf?R&_TSIGX3YLPnC$%~V>rR9)#_rG zm<3zrQtQhFG^hRf>f5qAhFbF3-S}h=JtJ(iJcz?v%WR2O&1}Ub}9#{ibII J{{gd&(T0420-yi@ literal 516 zcmV+f0{i_#S5pr80ssJb+Feo0Zqq;%z4M5z771Dvp|U`-1X4C6wnHV9D7B~>3fUCF z3Uz@pvB$And&aWIwOR2kZ1{>wd;l!+4XpT!Fm_547-=k>bI&>Vj&BY07r^~*0EY-B z`;P(O%fSx>FwTQ;^kH&l)oCJ%kw(YeNU3aO+f`Nds~3HlFKl->9NNyn9t?U~(JMX+ z#p<3Yo_4)9V8RPOk24iZVKtb|WvPz4-P_c_zYEREJZU2X-{uKVxlo1e_FWwm_@hwf zDN`QHvLyCd6KB`GB9i`9#jbfTOjr?(?TxVUs8}W3I|<~RTW1Nctt0DX<8Re#Nh1z6 zgL+%fWR1J;%hb+t8I-=BDb!J|dE3%NWaT`Gi-_l5DXxU9)-5({qw#ajl>Armmuu3<#TJ`xJT7{CM)3w3WxYrLCZ za$ljErYsip5jrFt-NZ!LM8rhYBpnkOv~7l9a}Xvw7<442211B*_KE%?Oc7APh|ry- z^NBvg5q+b@xPbctw49xNRWGvdt1M|cupP468v&9>k4O5;Cu GW6_rj)%iyN diff --git a/test/swftests/DictCall.swf b/test/swftests/DictCall.swf index e786bceade87bafa490f5c4e611fdc11b317dcfd..3fa3559d674476ced91adc20d6844e59c6a98dbe 100644 GIT binary patch literal 547 zcmV+;0^I#WS5poj0{{Sc+Feo0Zqq;%z2h0%NhF|E5fmgOBNo|^jFT3mM5#s9P@oHt zV1v5q#2zPZ{gOS#?u!3l1sm3gALtrZ=`XN?uLxr&jSC~q;+}iXxvv7qFMyk00k#p0 zH}3(!$E}|TV3auS@a_1}C;~rBhceo0&xDAFl;(Nf&3C#{GNrx2U_i}2?e{y9(Miuk z!HQ0pK5AQ)!I-CZ;>E&?LZgh?B+A5IyS;LC?6ql}C4Ob;*p&M`;GsxquiKMGjy-gv zBw)f~aqN3GEA42}NoSFLma`AM4)en5VIdvc{!CB7~xE#hqAd+CfPRu-OxQNAouqb0{qI1|yoj4Q0n z`z)MhY|5?YudCcTu6ksGTSqK3b{`vkv-f1#MG21Rf6HDW@_rVKH-6(094L#$;<$z7 zfi?Mw_T?C=_wCcg_ak}mAFZ)xiv#BSaB=&OOh^pegay0@8_+GOO~76#v^SGeZi~hh zodnDaQSorKwt8jz?{;Y4G@sH*=J`T$&Kq~oHc>%^yQrbxCyI^xk$` zZEC35K%^{)kOK8XSZOLC5kxjILKsOk5J|!W&&?MSR}@TIbMw+wFJ0~PO8^BSqH1$< l{t9Fs%Mjn1n;cFQ^F((qSPX4D0C?j zET~g2_BnCu*p_{+-HE>f3o8>712bYt{{j>Iig0$)x^U7B@AE#-^L`aTegWM646u!0 zy!ikCK5YF&0K>%f25-j)Mllb_DqO)Kxv-m-F&ATB~xnk`+aKmXs_3ij81wH z3RZN&^hw*U48}Zl5Qg>s*`0SrSy1u0wgi=R6cCwYruxa-D$} zC37Zh7RQ0_u+okeopcsCXE{6P9WP+%Y)ETjsS&;ixIJ>C2{#S`UKqQ^sMc5P6{RG* zb))u;FmH4Klw1~4w;HNX5*jacMM)|5ljg}lI;Y>vTGOn;P zAFyzmu_?D-9#y&PxayG!ZXZSGhV}fZ(KD^xRU0Kbr2lPujmQJqFy8o$hp?|Km&@Z8 zmKWCKC)%fDsNPrg%eO;$@gJ?R?}&XC1n~XtADNICcnOZ zD>|7oKSagj_1@~8jo$6ho@qX#lgtl<3jq3inY%e@GM^6QpX2uIotA5!MmW zk=oQyvw=ui5FrKXhp^IAKq822VuUb~Y9Nw?30|15B(5l!v=-*2r(Sy6$JYP~LPXUT m=Hd`!9?KBlS(qG76!S!R507S8!nd}{QLm?eA%nl%xZ6pT^9XwY diff --git a/test/swftests/EqualsOperator.swf b/test/swftests/EqualsOperator.swf index 63ad7d434ce86e7df21a2db48cd8bc1d988d556b..33487f078548efffa633add3400f41ab60fa0a58 100644 GIT binary patch literal 508 zcmVZqq;zo%K2~^iWy_p>ja7M5SCv)(Pd1D77dg1$v+o zC)86n_9k|_-Zl0bhZEn@3m0zvf!?{`Z{WmVgk7gJZC6@p=FNL=W_K1~{{h(i0kDH$ zy!{jazPElMfKe9ChM&fV?jqqLAL?ws9VwL#2`S66TfXedY)*QE!GL&u((iXPqmzFV ziY_`Lf8O?MgE7m4EKXG{g==y;m4(`Gx368p;Knp9GG1GT0b!gaOsJgnx;Y@ zr)Mlsc0yx;pP(HK4F_2c!Va<>)UfMz2-XK#_@M=s4(x4=5Jr}bzy=-Jxbof^f({>4 y-Y(j;e!d5=5V9N1%Bwzru40|yN0rCm6nm%mGdznd4YyjR$GykA*3dr|D%JM{L-wu! literal 511 zcmVZqq;zo%K2i^ibLcp>ja7M5SCv)((|WqST_07Am1u z;)HtY#@@uHYp=1_wK?%ET)1%K%7Hr^@HcScFT$=<>b5JbH1p=YH?un>n12A)zW{6_ zm~K7^YPp1p;bma&c-U+>jhFKV?v6e7!*$jB3%$?G#U|mNQT3{V)V0* zv7}``&K~#N+F;5uFAWnJirCUQorzrT^?H}CzISDsbR=xg?hqRDK=lFxXU1uS**_&gTHszrlpj+Zhj#ZAV4OxHP$ z7dc%p_u#m$UFG$RR5JHiTv*PtC)Ut*c2{F)bV6?Z_9dbg=)!d4FP^|lW4Tq{Bw2h(FK}HAR4l+BaW!CKwGzS^@t^tM$%uS3CMuv&N1QnUMvR`R} z3hz|*4%#ukz6LN5GF$D+u8u%eu}bm1%4Tqe?KAui9tDPiyItMm)?=P4=pUo+)zC!v B1B(Cv diff --git a/test/swftests/LocalVars.swf b/test/swftests/LocalVars.swf index d003d4ffded80169e5ce448355abe9d257ebfacc..42102af2780a532ff8fbd25029cefd3904670541 100644 GIT binary patch literal 515 zcmV+e0{s0$S5pq~0ssJb+FenF@?Shz@*t&NLVPI$CzX{K1>ip*@SjSPnGWZ%vg-2b2~?(J3Bwl59e|{eGW1J=*KFwW2LQ z#){3_vAoxE%Yc!PJPT44B(ZHU8z;HiZ?&#cJ-!Z2^DHbQJx)a^A`vS|yPd8M^7z0{ zvWO{{rD+&&X5#3qEvE@TE!YRq_CqG8Ls|)qM+GVr?tzz#g?$)`nZ0KpRQ^)Ek{Gd9 zHR@h_CNu61Pa>LTiI;QTldq#n^L2}fNb_+R$f?NOJU)$+Vs%Bu8V%0`Q^~)IznrOu zES}_SBHX91%Gw&2Ju)TSBNp3x5A2@PeYEPrkVE?4XJ0XTelCofzwr>BSj*+|coXXZ z*Yzg#^J6Gi^UKB8BR%lT&6f#h;aiqTxVZUES2PKJ#v;*$CUl^5;viNVYhnHM_`TqY zL@bE$ZM2J_)<9MR;RYfNR3pY?A%vh>$if>ISo%P=F+vzw1OWkkB6#jRGlDuMx8~0G z#o6La{`|2xm-ji*yY{>cBenY6nZE!n#Tw!pb4S1lc24j+xI48py|rU5tX}h2qd!@2 F)+Gi@_?G|x literal 518 zcmV+h0{Q(zS5pr00ssJb+FemWZ__Xs{T#b3+hJ@Ppm9Ko#Gw+RO;RSLR$atI8B9V$ z;(*Xja~-!0OX4VYmU7~+Y!`mRZrtHg%7Hs4e!;HAPDeAaWXbP+?>&F^HwE$wVB<5u z4uZkfeE|5h{S5*1vtZPFJ29n+> zB|j#LPFsn5*!0VQ0hcTbQx%HDHkb}YuJ)SE>(qd)Leo5p%E*8@JmN7=lytndr-K64 z8;LBY%BN`>g^ZdwXWEhz!A=W$##^I^%1Pg;gvO&n6>)z*5JPSsM0{%R+WVEiR4*k) z98`_^H=aq2yUj%Gq?rhErh6LcsM37XVj|Lf7=?1eGe1vG6HzR$s92+68K+A8tN6>A zdPI|PPRHDTaa7h;xa^TC?jMOW+k5)h?zrCWvJJ!bo&SFOn$ZLFVX*ld_u;vDqnU&+cP@2BlQ7C?%stqIHk3{rCTeXZtiKt4 z;7pO2h6%ohb}-Z$$Z86z;pP$R0Kjs(m5hHrnUX@{_R-d`EL(o#JA-+9xIhiwujQHfXV^M5{Fz!oTTNDD76TL0F?lV z6Y8lOd!3m2OZK`BC-^CF;mCnM&^xDu13!Qh|03)v}@aCSvJapMv{%~R;Sakn{B(@u1iKe z{}2l{t;hL;no}7Jc(J`2^%Z+b zQDkr3sB`U^OsN}g64_~%c!eu_@}*TJzAjM~X)y|ee8MxQh|l7rT$Wg)isNRSiR53# z3RC%z#p8mFx%2FGmAi_o9+}|IF^jFkhgQ4UdbI39fj#@iurCq0KL-Xoe@G9WYKz6< zWQ)iJ8}g^dmlLSY?AyinW4ZA8)+-*3c-GJJU>vLY!^Lfs3HgDav52=|2O3JU2_%Tc z&P~4YX7rxB0?%=bK8;uqle@T2V8cYsL}DT}Q8&>r(KK;Gbpfafs0z!=>Yzq8HK2s5 zoQ|Lw2n5jFC5Sp|6y+Nb2_>`U^NLOA_N+O30-v;BKj%XOUjS%`R5v8*QyCFWqxvlw w%^8)*Y^cL$3DXtnB}gM(YKSCpI3>+f@(%7#Gzs6?Q@#B+oyQXV3%oSsrJA)9uK)l5 literal 560 zcmV-00?++JS5pp10{{Sc+GSD8Zqq;%z1K6g+b&9~0xAn6ODrNJ5+|V&N|agzLZAzZ z#0quQi9Jr-`Xzf3hZQXN5ZLe&EcgI62@5`e6@L+CoTe#dWJ`0;J?G4sxig@@0d~Iv z93b@f?g7Au{T~R>%{;&Jwm-0DQ5fePSshi!LZltrE{dXFJgz6%$ZodVZM)I3TdkU8 z)bjVSV6$4BKd3sTL7(St7NjCbVoTL*m`ub`wR-95xmTv?BnwMR&$W5TBOZ&~Zq}R9 z$a6b>l0{57EKS3}Wy;Q;)$(!TUKDJ~YktV`ao64ul|}?2~Y*58%+QR;$rGT*Xjm*S_)Emxvso1O3V$(uL>R za=AR+A#%co{HgKf6w399Jp6VnC%)Ku&7&dDdU+m=iC)I#S!{6VnIyq;sJpz6EzcwiPS{hM8ibW#4VKqP#vI7SZ&q|HL|S% zB~oif9_u yZ^>%Gs6^%i9X?B#u1UurjdZCYlEmSRG|tF7xIfk;d}m)}`|ow0O7Ji3)8lRtFBA0u diff --git a/test/swftests/NeOperator.swf b/test/swftests/NeOperator.swf index ee2487c697455a7fb44a725f5aac644fc5f22d99..a251f7a20be922af071b237b906311f985c70819 100644 GIT binary patch literal 537 zcmV+!0_OcgS5poj0{{Sc+Feo0Zqq;%z4J(-WKIl5)ywAW}K1)MzVCzx#yg@<2wWT6X3x$ zz#f9(&LaT$wEG*&}W?>-HzD9@5sZw#Du{_V)`LlMEOjxJa>oL2_y4{vm zw9=1K@mWizPnu2f!c^5qq4)@a;Ba25Tl z_{*7oz~v<46XCo(D|#zj%*d5+PPw!Wo?2bI^L#mlAqVWgpMB5h{W&nK{U!rA#*4+` zqDu6F%lf0`FBedp>u)z-PxZooRL{hDED|#d+|+;RmS$m`@KAK125l&;#FuJASw0`V z7p|fq_a%9V_6U?J2v-oPAX-5sT3mr(eGn#F7_ctr4nc?@Oc7Af6(w`~l@VYxSOiuNT16;Py2DMu?Wmb9?>YTG~*e5+mC#D~Vgrlg00paw&zy^H5* zdMY_(Ev;=Ol2%Bo$UXJg-)Jwr_uNB2AQ$J5A1D<17w)c{+HMyFZ|2R+zSWxp`3dmo zE5JU2;ocJf_*lP10E5Jv^xq9n&3PC^X@BxKTIaUA$A({Xg(PG`cs&e;ubPXd9DAnM}Jot_W$I2rqNhOcNDVn71uDBF@HvpU!yVWYKjb^3@d^R%_gZGb#R6 z{N;2%V9_*VQ|`PT6}>esW@M5(BXMKeFQ1!T%RXFySZ}nzz~p3M zHQ~OAnnt|}aM#42)B9RkS434!<6uQs*K|YEI|q#dcnaLT1uzgIrSigBoPi3)3gX>` c#o-cLm-szAof(SWt?Ti&-u_C#Ke@T!$uYkOfB*mh diff --git a/test/swftests/PrivateCall.swf b/test/swftests/PrivateCall.swf index 7abbfec41b021a7b3ac489abfca5408a36757253..7fa395a5bc595a2d28dded0420278084936bcdc7 100644 GIT binary patch literal 594 zcmV-Y00{{Sc+Fg;)Zqq;z#%H~2I|&lBDndn7B}-Jwg~U!MheWAG)exWu ziZ~!t38@=<-IzMIWv`oXf>+_f18_#_9dQT;UVsyCQD)sgPP?*Y&o{sMJmZ-I`wMXQ z8^Ah&;p#&G_`LR$01Pre=)WC~tobyG^FBs9&54w0-?nG7S$p=Ron*&$r`PM*PS@^s zTS&C>PqF0lR-8X-x~0KTA5s9gYWo~!c z9W?U2evo8SE?u6cQRs1HXU|*tB=JsW{8Y4pi06}mU4g1bhB6ZFuAhvBHHyUC+O~G9 z`jWmt6zo@xx=UknRo(WIshwttUwGJ4fL3Mka*47?i*Xd@6Op+^d=e+Ki%(RlV!TXn zncO60Rc$0;v=(fkB2+r=mLk%woGCma@Sb?^p8$iQY z-dRG8gYie<$;N@iA@^_*`NmSV&GW5JzshN8z=9(7*p!E{@qnyT9o7vUpk@-yB-A9# zq`Ik_CPAfMD_bN`9dawyG+Ng{14io%3{59E8UY=Mxk?Geho&*qm_}+q2xWBPyg&z{ zQFd?Pd|>+wzOX;PM+Uq^GeVedES$wFK!{d6Qwe?HY}Jv{RbV1D(p8ahqsT-Ly0LHs g98u?pzK6|;cJ)p+Ck&C5H8sHU-+qSif9zWA)&T4)U;qFB literal 596 zcmV-a0;~N)S5pp?0{{Sc+Fg;)Zqq;z#%H~2y9p9)RfLMFN|vaU3yJMeAvH=Zs)j&0 zw1@*jm5|uj>&DcvEqmRB6TAu+o`D+=0Eckk1vv2pT+6Kc$7xr#?D^(5pJzNXV1EGa zeg#-3Fj##60H4-=5P*IjguT~;p*5StNzub-w>6eB>)G~nI_*p!chdaCc6WAmY^Q5? zyKN-e#m7YQSvx5nw!F$UAhMTwP{x7ab+3!wur?)7^nW}l%I)q81rJ>w`)+<$VkS*+Y8c>u!gaiS=-iL zU0=}`h=PNPuBtnJIPv`(HXk!^Eig@_uim}7lb*V2p3kMqv$5k zD3Ny-P~&LyLHM$HByq}p+(falknQkd%k9-UEely#CO(_+C^7Dnb*jUZVChX)IMO5~vTk6>A!8XrKY34F-m$6C90z4#ZrggyKWf7-~!-OF#%^bnZMy z2cl87Ja^u)mkd6$-@k?iyg)NTm~PCS`2iqAYo4iuK6kbnNa-ptks9i%$hc8tq6giW iI|ANQ=RJK3n`7PH>Qql+3O~p;8nQr0K7mYj-0}Q7vRJra4WM;Teq>i($2r%|9jRm1NH~t z_BVhH0)y3i0PuP3CjsbZe$aa}IIw1uD9(FW?Ka0!rajx9PN(hZ<93oA+nt@A9oy;J z-EIqsR{klLeAbHdhfTK(7>L}MyY^j=$l0xn_n-{6RcNLlzSyV>)o-HCV5wXne zPP>CazSj$qY{I3>(=-Y_uHx)jD<3D`$&{apRuJ)g+_x)Gd1NRf;qLj#NLUAvm|5G_ zUga<81)^ZTYSg`UO|IN+FPYeBmiUE-Jp~w5ny*__L|TlZFdvJ|E#i|nnJzw2sfzJ3 z!DVujxYX2n#N*?F9}D-{tMcrsE_>usxQ9HpwjWttr}Jddg%bPr($Bt7aDFZfR{qjH z>}%)e=SK~S12%9mw9gqnnzL^r8n>NS&~*r=6l6Q~~TVqMjg)iqRfR%c*n1_8_f9Y}4J5(>mb0Bfd^ z8W2JmojcDlk)XUfci!uVI(*T8{~DUGReynTgfQKhJM))-7_A&k9W1uG+M37=4FwrD oEG8z<`*TOY2j+ZW?_hIGFZX0~tRu3%rY^KRfv2eb2cTK@x@~?dC;$Ke literal 603 zcmV-h0;K&zS5pqF0{{Sc+Fg;sZqq;zhG*loodgM5wL(Rx!V;BoA+a4Qp+>1i)levh z25~^B5>hwzx^e5+mc35G30{LE7hZw`M-E)fffwM!Ta;O+t=m{$Y3JYX|2^xO1N{qd z_Zz?lfx+qn0Qj`_ivaXf&+ok*92oOS7-c=Ic3Wd1lAdYKX0y)hX(vukO?zi&$F#a; zx7$Xdoqdc1o42Fvamy(K20U}qAQ3?v8M0=hI2XIE)@7>aUWX=m8kUisYx0m!cqB5@ z?${XQxjjElCrmgjNy5NoGR~a0vvKU6&)Af={g7qjzFC3NBLWd}XU~gA+&BpN+}Jku zDt}2Y5D9x#qt1`TYD+d_TmA7tJ?mFvYZYap3Kb#ct)XyWAPFN6W_sIrTVMA8| z8ak=zM9~S=iK;7_uGV#eVzXYhO`v*em+QJ#XrqRTN*ffknnnOKKm}4?RfqyaM*wSD zBXuA|p-N%B#6*JfYGHj)U#sw0{quXM!&c)J#t}kQt+0wiKuoC|R30q0s@&?x3^fU9 pw=6m)C=UyZ!wI!c=zG{4D_486IaU!_Uy~PFp1^a|{sU%#_QxkDC7S>M diff --git a/test/swftests/StaticAssignment.swf b/test/swftests/StaticAssignment.swf index 972758959b114616b37f951aaf4d9ee529964aa6..dff661c8df854e7362c80b385fadc18475a69bbf 100644 GIT binary patch literal 516 zcmV+f0{i_#S5poH0{{Sc+GSBeZ__Xs{T#cA=m9zn&^RDP;?N7N(=raNx`>K0UHK@(bYRSAabP zlbw42@M-ra0vKh%eE4Q^=&s^O=0lAR+DoO3qj1$;P9 zvY08KrD+s$X5#3olP?o~QnFLgnMW*Nj_6isJStR?@W(+i6YgOoR_?w#-ui3xMq$={4 zJ^LWILZ>8Vp~QF59tPV%mV>Z^h=UpqvWf8{gkXD+g>P730a!#=ps|Ay!pI^B48{ak z-gBd}Flkoadveaml)TV#gh<1#yy_+BI@S>1syqQx>`n1IxWBYCeP`D^_218)Xz~v) G*Vzt;#stU! literal 519 zcmV+i0{HzyS5poI0{{Sc+GUZ!Zqq;zhG)GSTjT(#N>Mo=S>lij$=Yd!lqj``2!&pX z1Q*l;>c-wAruMF7uj6pyS-9{FTo4byC4B`>JOS6R>y)OHm3)|gzW?7@&l1Q_fV*D+ z_7RMC9st*WY99duYnb zN83Sz8_#6M-3?_*vs^}HsArn$sM>tfVj{9~lElTF=Rqkhgse7KY*oXAIcG}#OZ?SL zKVf24vKbFvoYuYTx}K3K9-PXB>py+s_B{V^Glo%z^w!_LQuG1?7`J}mAw0L%>-AX^ z>kZrbBlhPrs8720`|F9`_+|60(!VAg6-7J~W&!a1{x=Qi9!ztVavxgIH5LbOEL7_@ zZ@->=;GseblCoIf2WTII?I6oR*g?cW4F}o8_z^;|J;=g$EU*A9qC3#o!3bew5d@~j z1h2f8hO#heuDti;l96-rO5+HThQ0DuC!qUSm-ybw<8Y3>bNmh-%`GkO?V79pd)YHB J{sDn`*sN%60UZDU diff --git a/test/swftests/StaticRetrieval.swf b/test/swftests/StaticRetrieval.swf index 3b6366e0c8ae455ee06c65d86a162da3880bca1d..622c40dad581db07e9a6ecc3bc483d7a7dee6108 100644 GIT binary patch literal 518 zcmV+h0{Q(zS5poH0{{Sc+Feo2Zqq;zp7lDm+CzV6Rh0vhB`W1YvQAnKiBgM-P)ZLV z6(OOXvRQ9pQ+sXM>o}Zv7A`yhFOWMYKLaP;BJ4V)DOqWyoo~MHo0*+Cn7;vbegGUJ z816p>fNuxC5WpbwC;gk@r8AEsk@r<}-VCHn`-GHb*)C7pNj4>&Uav>oF6nk#iqXoy z3Q6ZJkw0&GwZV|*EDKW^Cc@D%9Vdl6Z#M5;efD6Q7FkqV`i$_1$6UyqblM$dGnnW}Y24qdt8X3xndl!B(=FVlr=gygPvDVk@6-AT% zb)(*+F{xI!SrU^pOZPm2=jEyk4Gzf0XWt`ge;y3?{@?+;HkQlf?KV~m zw$wGP@3&B&Pu1e*wOV+!{ZXo)VK-c6A)nC*7KaO!S1FieH0B-HgSJ-KfI}g7H|W-f z@fXe{nwc>T1wKN@7%UqZHo`VCZPc)lW!4oDtPe8qmH`HUVFE(X*vANAWS9taj7?m* zZxu^FcPe*eK2Zalz|{%5QWAvBhE=)MJ5U^~LcCkK97fn3;m`0aFcf@vpv!HJ_DW%Y I0S@ifl3Nq;zW@LL literal 520 zcmV+j0{8txS5poI0{{Sc+Feo2Zqq;zp7lDm+CzV6RTUv5OH|5*WbIHPB}y$SLTN8W zDi_pKHtS8|*7jQVIu0kEg$vKnTOWXnpMeukz%}eTr72lyrJZlS@0*#OIhelywtfH{ zA{gvG2Y_#TKM_Db3&y>x!I?9Uqa^RC=%hK7GVKvkmSwwq(-zr;c-?N7xE<2zv=pP2 ze@!Hvx03u-)2|H%JZD*$%1|VZj_F7g@}${(a1Gd_X^Hx3;?6#yc-Wo?VpZ3X$s5LT_5%*66G2+fy#OKbjbGp*k>?K8$ zgH@yclQF4Qx0#4Znu(xbs;9BCs>M$w+9EARQJ7D8<`>CrBFbfn6{Qi->bYz!8oHa_h1LwT44hY6S=)c zw?2(-IFo2*#xzXu0XoEB*~qXFwvlP0hK($!J~So*nDxkK}r8sG@dkI=c2AY?YI%B?Oyaj**UcI9#yVt0tYz{{zj;Qc*aZhf?O K3i}K7Vb;kxPy%)U diff --git a/test/swftests/StringBasics.swf b/test/swftests/StringBasics.swf index 6ade5f7ab36e2fee7ec758d9d6d612b7bf9b7b67..2784c2b65edcb61fc471fcf010f4499387f95d1b 100644 GIT binary patch literal 519 zcmV+i0{HzyS5pr80ssJb+FemGZ__{+{myr>X@#Is5h??cC59|b&PmIVD77er0v$kt z1$FA>e2z`+vt^%gnD{L$`~X&l?np>sK)@Ohn z1e5kX0Qk854FQacARN7(9J%u}k>yBN2c1Z%d_-wo*S&hLmlZSG9}b7q8_>a^s~O$$ zgH&wZmF0tu-xy3p$%{BwaVA|;vuReTgHGqdHQ<+~c~vBhWx%OOL@J~zX}{OkMgbp% zS&=g3vpi2?&Ws(McgrZ_XEl2-x?#e~XiV2cqfxO+gnt-hQ{f&ZV(#v{hiiSqUQrA= zSO@j5Jd+u9k7p^(i!7+P&J=2^MtoIbEb?la#APH3zmjJ%t5+k|sNwKJFqK_r{KHH? zVRBZnned;!YRj&PN z`c7~~QWi_hrrb`1oT&)kMLQU52U!ln4k8X}ImjW+Pz39PEWBZXr7xt75yHqK2ngsK z!3*!1#x;X%EWBO&=Z~=UTt`NTwCshqcmcYNb%}2;JOQWJJH>C|eq?F5y={hEd($Hg J`~^h|*2I)(0GR*) literal 522 zcmV+l0`>hvS5pr90ssJb+Fg;sZqq;zhG)HwO)CVAicmQqS>ljO6WgH@N|ag@LZO!; z!3Fiy&3YZXwRbIhU568og1GPws0SVZA%z16uAF#_uFe<`m_-1_Q%(9f1Lly0JVkz^X>(+JMs~`77F?IdHVBmUvx8Lt7 zqFcV_lFYiieAEdVgE1>oNF+|eavt&jLXvXd%iLX z=`a#SMr1(pJWVLkcJ8cO#)6*Let7^$op5 zG#su54c4AXbaju4%*_iCR#eRtDXXSIm=!_A&$+0VEmo>#Xu*gSH;I3m z&ZmS=D>7xli{mDD9XB%)$%12X;rLH>oxbPqEyvL6$o=ncUny#V0gSi);1N7G7K_En zCRQ7^)Mr|sPM|rzK7P48QXBui`BoMQpFSgHLQD91?@}d|4pBie=ED~BG=2+k!sYFC z)_OfTV^o?MNjN4GYNd=%WsL8m9SoL@3>#q^nKo+K$Tpj%2v!Ffc*6igUCcH{2qVKp zV1l}tc<#Max+2VtxwmWm{1LTY0T>9GEo<)0k3gld3h~{!$KVuur}!N_j148Xw{?>n MZ+fbPztwTqv$9~_r3S-`TM4z{sg%7 z1z;D!VCx-yvDcoI$_q+mql+~7a6Hw)(Pdt;l9x}TaT70aio8rAJ_l@ literal 557 zcmV+|0@D3MS5po-0{{Sc+GSD8Zqq;%z2kB0HVbIgg31EPh)UTs89S{&iBgLwA<#_` zbc4F;*q+3ue#su!VZ|@-3BZD%V8I8lNf!J7E5wo?2xBM2rHo{0?z!ijIlgxa@(+Mp zp8@s|47cwAz`LDq2%wiZDYw%EMOr|iP18I zkz;qqQ4&yY(m3`#n-+Ft+DzTZzRc+rYmR-Ix;;`63k~sPCy|rcBGXt{mE!A?!XnNr-%DMVm|1ukM)~rI3N1Kx!YGga zW&Fj8zE8tRMkmaCdRq3@b(xWJW}Ze@n(_ERYwO0*GDd;+$c<^Q5V1fLhFd>z4+hd= zu{f_|v0+7gvhwj9%Jcr^uP-NJT*7Zlk$~>QYVclMf<-2GPZ>XTCNKz42 zk*uPciZ|pkB!cQ732#auiHp3A5yD845y&8JGM?$r3W9{?-I;!%e4p>5Q4Q@opXQ?) ve0UBZAtcw7nLaxK!Nj7(w`V$o3#?z@*KpsJ1bko1~0Gt1e<%DX;@b za6yxh<|a-Pme^6^Eak+B2jRj4@B+KTr91Efhy!m?>~ySSSc>HD|NZ`de~#xsegfS1 z0ym=P@K5l(O0HY#|hOfsHd!D7d9I9%!6HA#79jC7AUj3*iikagL1_Q_KJN`r*obf1{a}uRisU17&t6t8RN2ayq>3m z!eAJQBBRo$d7dT#)p5?eTgDTRnt0UH`W`crIDgGt? zYPz3NKC9@A`A=Uqy^Fe;kxJ$tP;T!$wEM32cr}FeXgkY^I_cnjYqI=ESJl} z4Xhs6R39-vA40Q6zfQj%s0TmWcq5C1&-MjBVMVDz;Plpa1*jfG1$Rf=M2-XW3___gx+K^3* z5Jm<;KtSyXUbxRRU|@1{;l67<2qrD`>Bm`QJ_j%mA}w>_E?$6wuqv^F7#v~u2)~7U Vv7zMKTl%Q~?)gNCe*l~S-;L5O0J{JH literal 531 zcmV+u0_^=mS5poW0{{Sc+GUY3Z__{+hQIS&Z0G>33aAW7mO#ovVmnkqiBgNIA<(5r zu%Jpvz1Zj2)V{Oqa~vineh3SHf`O5tOFFPJF!3+Kol}}pPO^00`#tY_-}&Z1egWM2 z0$U#nkco{l4S&oL;Y^ zh)(%|OFHlH@?qO=0!FM1iX@kb;I^*mL{xIG-M&Z-gUisoD$*u03>=oSjB!~yUe{AW zVK9h9kx}W>JWrE=>NscKDPs|w)^x@?QA*2r=&V8Qk%>&1zaNSTv&Si$+q?Gu+TYMC zM8n~FQ2)v`sdje*kvVxG!YWWRMJlQ>U$y9nyqcs*8MDH#_$e3l>WHd?9Nw=Wd+fIf^if8!w>7|Z4I zcmt~!Hq}SW&&SZLpW^%1L-pe48*gNh@acizGgg!;1isxlQ-JD0RM3ohunAplxdAxg za`QTGzM8yefg~ACxVdVYDdSTa<9lcagJmJZLfAsYLM;oK7P3e)0)q8I2EJ*4p*Ca- zBZQGb5D-v1f*0-!4H%f*UbydCkAiUvefn`8nJ)nhgh + + + + + + ''' + + self.assertEqual(ie._html_search_meta('a', html), '1') + self.assertEqual(ie._html_search_meta('b', html), '2') + self.assertEqual(ie._html_search_meta('c', html), '3') + self.assertEqual(ie._html_search_meta('d', html), '4') + self.assertEqual(ie._html_search_meta('e', html), '5') + self.assertEqual(ie._html_search_meta('f', html), '6') + if __name__ == '__main__': unittest.main() diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index f8e4f93..85d87f2 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -8,6 +8,8 @@ import sys import unittest sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +import copy + from test.helper import FakeYDL, assertRegexpMatches from youtube_dl import YoutubeDL from youtube_dl.extractor import YoutubeIE @@ -192,6 +194,37 @@ class TestFormatSelection(unittest.TestCase): downloaded = ydl.downloaded_info_dicts[0] self.assertEqual(downloaded['format_id'], 'vid-high') + def test_format_selection_audio_exts(self): + formats = [ + {'format_id': 'mp3-64', 'ext': 'mp3', 'abr': 64, 'url': 'http://_', 'vcodec': 'none'}, + {'format_id': 'ogg-64', 'ext': 'ogg', 'abr': 64, 'url': 'http://_', 'vcodec': 'none'}, + {'format_id': 'aac-64', 'ext': 'aac', 'abr': 64, 'url': 'http://_', 'vcodec': 'none'}, + {'format_id': 'mp3-32', 'ext': 'mp3', 'abr': 32, 'url': 'http://_', 'vcodec': 'none'}, + {'format_id': 'aac-32', 'ext': 'aac', 'abr': 32, 'url': 'http://_', 'vcodec': 'none'}, + ] + + info_dict = _make_result(formats) + ydl = YDL({'format': 'best'}) + ie = YoutubeIE(ydl) + ie._sort_formats(info_dict['formats']) + ydl.process_ie_result(copy.deepcopy(info_dict)) + downloaded = ydl.downloaded_info_dicts[0] + self.assertEqual(downloaded['format_id'], 'aac-64') + + ydl = YDL({'format': 'mp3'}) + ie = YoutubeIE(ydl) + ie._sort_formats(info_dict['formats']) + ydl.process_ie_result(copy.deepcopy(info_dict)) + downloaded = ydl.downloaded_info_dicts[0] + self.assertEqual(downloaded['format_id'], 'mp3-64') + + ydl = YDL({'prefer_free_formats': True}) + ie = YoutubeIE(ydl) + ie._sort_formats(info_dict['formats']) + ydl.process_ie_result(copy.deepcopy(info_dict)) + downloaded = ydl.downloaded_info_dicts[0] + self.assertEqual(downloaded['format_id'], 'ogg-64') + def test_format_selection_video(self): formats = [ {'format_id': 'dash-video-low', 'ext': 'mp4', 'preference': 1, 'acodec': 'none', 'url': '_'}, @@ -218,7 +251,7 @@ class TestFormatSelection(unittest.TestCase): # 3D '85', '84', '102', '83', '101', '82', '100', # Dash video - '138', '137', '248', '136', '247', '135', '246', + '137', '248', '136', '247', '135', '246', '245', '244', '134', '243', '133', '242', '160', # Dash audio '141', '172', '140', '171', '139', diff --git a/test/test_age_restriction.py b/test/test_age_restriction.py index 5be065c..6f5513f 100644 --- a/test/test_age_restriction.py +++ b/test/test_age_restriction.py @@ -45,11 +45,6 @@ class TestAgeRestriction(unittest.TestCase): 'http://www.youporn.com/watch/505835/sex-ed-is-it-safe-to-masturbate-daily/', '505835.mp4', 2, old_age=25) - def test_pornotube(self): - self._assert_restricted( - 'http://pornotube.com/c/173/m/1689755/Marilyn-Monroe-Bathing', - '1689755.flv', 13) - if __name__ == '__main__': unittest.main() diff --git a/test/test_download.py b/test/test_download.py index a009aa4..412f3db 100644 --- a/test/test_download.py +++ b/test/test_download.py @@ -155,7 +155,7 @@ def generator(test_case): if is_playlist: self.assertEqual(res_dict['_type'], 'playlist') self.assertTrue('entries' in res_dict) - expect_info_dict(self, test_case.get('info_dict', {}), res_dict) + expect_info_dict(self, res_dict, test_case.get('info_dict', {})) if 'playlist_mincount' in test_case: assertGreaterEqual( @@ -204,7 +204,7 @@ def generator(test_case): with io.open(info_json_fn, encoding='utf-8') as infof: info_dict = json.load(infof) - expect_info_dict(self, tc.get('info_dict', {}), info_dict) + expect_info_dict(self, info_dict, tc.get('info_dict', {})) finally: try_rm_tcs_files() if is_playlist and res_dict is not None and res_dict.get('entries'): diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 7c4cd82..6336dd3 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -17,6 +17,7 @@ from youtube_dl.extractor import ( TEDIE, VimeoIE, WallaIE, + CeskaTelevizeIE, ) @@ -88,6 +89,14 @@ class TestYoutubeSubtitles(BaseTestSubtitles): subtitles = self.getSubtitles() self.assertTrue(subtitles['it'] is not None) + def test_youtube_translated_subtitles(self): + # This video has a subtitles track, which can be translated + self.url = 'Ky9eprVWzlI' + self.DL.params['writeautomaticsub'] = True + self.DL.params['subtitleslangs'] = ['it'] + subtitles = self.getSubtitles() + self.assertTrue(subtitles['it'] is not None) + def test_youtube_nosubtitles(self): self.DL.expect_warning('video doesn\'t have subtitles') self.url = 'n5BB19UTcdA' @@ -309,5 +318,32 @@ class TestWallaSubtitles(BaseTestSubtitles): self.assertEqual(len(subtitles), 0) +class TestCeskaTelevizeSubtitles(BaseTestSubtitles): + url = 'http://www.ceskatelevize.cz/ivysilani/10600540290-u6-uzasny-svet-techniky' + IE = CeskaTelevizeIE + + def test_list_subtitles(self): + self.DL.expect_warning('Automatic Captions not supported by this server') + self.DL.params['listsubtitles'] = True + info_dict = self.getInfoDict() + self.assertEqual(info_dict, None) + + def test_allsubtitles(self): + self.DL.expect_warning('Automatic Captions not supported by this server') + self.DL.params['writesubtitles'] = True + self.DL.params['allsubtitles'] = True + subtitles = self.getSubtitles() + self.assertEqual(set(subtitles.keys()), set(['cs'])) + self.assertEqual(md5(subtitles['cs']), '9bf52d9549533c32c427e264bf0847d4') + + def test_nosubtitles(self): + self.DL.expect_warning('video doesn\'t have subtitles') + self.url = 'http://www.ceskatelevize.cz/ivysilani/ivysilani/10441294653-hyde-park-civilizace/214411058091220' + self.DL.params['writesubtitles'] = True + self.DL.params['allsubtitles'] = True + subtitles = self.getSubtitles() + self.assertEqual(len(subtitles), 0) + + if __name__ == '__main__': unittest.main() diff --git a/test/test_unicode_literals.py b/test/test_unicode_literals.py index 2cc431b..7f81669 100644 --- a/test/test_unicode_literals.py +++ b/test/test_unicode_literals.py @@ -1,9 +1,13 @@ from __future__ import unicode_literals -import io +# Allow direct execution import os -import re +import sys import unittest +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import io +import re rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -14,6 +18,9 @@ IGNORED_FILES = [ ] +from test.helper import assertRegexpMatches + + class TestUnicodeLiterals(unittest.TestCase): def test_all_files(self): for dirpath, _, filenames in os.walk(rootDir): @@ -29,9 +36,10 @@ class TestUnicodeLiterals(unittest.TestCase): if "'" not in code and '"' not in code: continue - self.assertRegexpMatches( + assertRegexpMatches( + self, code, - r'(?:#.*\n*)?from __future__ import (?:[a-z_]+,\s*)*unicode_literals', + r'(?:(?:#.*?|\s*)\n)*from __future__ import (?:[a-z_]+,\s*)*unicode_literals', 'unicode_literals import missing in %s' % fn) m = re.search(r'(?<=\s)u[\'"](?!\)|,|$)', code) diff --git a/test/test_utils.py b/test/test_utils.py index baa3a21..206760d 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -16,38 +16,41 @@ import json import xml.etree.ElementTree from youtube_dl.utils import ( + age_restricted, + args_to_str, clean_html, DateRange, + detect_exe_version, encodeFilename, + escape_rfc3986, + escape_url, find_xpath_attr, fix_xml_ampersands, - orderedSet, - OnDemandPagedList, InAdvancePagedList, + intlist_to_bytes, + js_to_json, + limit_length, + OnDemandPagedList, + orderedSet, parse_duration, + parse_filesize, + parse_iso8601, read_batch_urls, sanitize_filename, shell_quote, smuggle_url, str_to_int, + strip_jsonp, struct_unpack, timeconvert, unescapeHTML, unified_strdate, unsmuggle_url, + uppercase_escape, url_basename, urlencode_postdata, + version_tuple, xpath_with_ns, - parse_iso8601, - strip_jsonp, - uppercase_escape, - limit_length, - escape_rfc3986, - escape_url, - js_to_json, - intlist_to_bytes, - args_to_str, - parse_filesize, ) @@ -76,6 +79,10 @@ class TestUtil(unittest.TestCase): tests = '\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430' self.assertEqual(sanitize_filename(tests), tests) + self.assertEqual( + sanitize_filename('New World record at 0:12:34'), + 'New World record at 0_12_34') + forbidden = '"\0\\/' for fc in forbidden: for fbc in forbidden: @@ -141,8 +148,12 @@ class TestUtil(unittest.TestCase): self.assertEqual(unified_strdate('8/7/2009'), '20090708') self.assertEqual(unified_strdate('Dec 14, 2012'), '20121214') self.assertEqual(unified_strdate('2012/10/11 01:56:38 +0000'), '20121011') + self.assertEqual(unified_strdate('1968 12 10'), '19681210') self.assertEqual(unified_strdate('1968-12-10'), '19681210') self.assertEqual(unified_strdate('28/01/2014 21:00:00 +0100'), '20140128') + self.assertEqual( + unified_strdate('11/26/2014 11:30:00 AM PST', day_first=False), + '20141126') def test_find_xpath_attr(self): testxml = ''' @@ -202,6 +213,8 @@ class TestUtil(unittest.TestCase): def test_parse_duration(self): self.assertEqual(parse_duration(None), None) + self.assertEqual(parse_duration(False), None) + self.assertEqual(parse_duration('invalid'), None) self.assertEqual(parse_duration('1'), 1) self.assertEqual(parse_duration('1337:12'), 80232) self.assertEqual(parse_duration('9:12:43'), 33163) @@ -220,6 +233,9 @@ class TestUtil(unittest.TestCase): self.assertEqual(parse_duration('0s'), 0) self.assertEqual(parse_duration('01:02:03.05'), 3723.05) self.assertEqual(parse_duration('T30M38S'), 1838) + self.assertEqual(parse_duration('5 s'), 5) + self.assertEqual(parse_duration('3 min'), 180) + self.assertEqual(parse_duration('2.5 hours'), 9000) def test_fix_xml_ampersands(self): self.assertEqual( @@ -376,6 +392,30 @@ class TestUtil(unittest.TestCase): self.assertEqual(parse_filesize('2 MiB'), 2097152) self.assertEqual(parse_filesize('5 GB'), 5000000000) self.assertEqual(parse_filesize('1.2Tb'), 1200000000000) + self.assertEqual(parse_filesize('1,24 KB'), 1240) + + def test_version_tuple(self): + self.assertEqual(version_tuple('1'), (1,)) + self.assertEqual(version_tuple('10.23.344'), (10, 23, 344)) + self.assertEqual(version_tuple('10.1-6'), (10, 1, 6)) # avconv style + + def test_detect_exe_version(self): + self.assertEqual(detect_exe_version('''ffmpeg version 1.2.1 +built on May 27 2013 08:37:26 with gcc 4.7 (Debian 4.7.3-4) +configuration: --prefix=/usr --extra-'''), '1.2.1') + self.assertEqual(detect_exe_version('''ffmpeg version N-63176-g1fb4685 +built on May 15 2014 22:09:06 with gcc 4.8.2 (GCC)'''), 'N-63176-g1fb4685') + self.assertEqual(detect_exe_version('''X server found. dri2 connection failed! +Trying to open render node... +Success at /dev/dri/renderD128. +ffmpeg version 2.4.4 Copyright (c) 2000-2014 the FFmpeg ...'''), '2.4.4') + + def test_age_restricted(self): + self.assertFalse(age_restricted(None, 10)) # unrestricted content + self.assertFalse(age_restricted(1, None)) # unrestricted policy + self.assertFalse(age_restricted(8, 10)) + self.assertTrue(age_restricted(18, 14)) + self.assertFalse(age_restricted(18, 18)) if __name__ == '__main__': unittest.main() diff --git a/test/test_write_info_json.py b/test/test_write_info_json.py deleted file mode 100644 index 0396ef2..0000000 --- a/test/test_write_info_json.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 -from __future__ import unicode_literals - -# Allow direct execution -import os -import sys -import unittest -sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - -from test.helper import get_params - - -import io -import json - -import youtube_dl.YoutubeDL -import youtube_dl.extractor - - -class YoutubeDL(youtube_dl.YoutubeDL): - def __init__(self, *args, **kwargs): - super(YoutubeDL, self).__init__(*args, **kwargs) - self.to_stderr = self.to_screen - -params = get_params({ - 'writeinfojson': True, - 'skip_download': True, - 'writedescription': True, -}) - - -TEST_ID = 'BaW_jenozKc' -INFO_JSON_FILE = TEST_ID + '.info.json' -DESCRIPTION_FILE = TEST_ID + '.mp4.description' -EXPECTED_DESCRIPTION = '''test chars: "'/\ä↭𝕐 -test URL: https://github.com/rg3/youtube-dl/issues/1892 - -This is a test video for youtube-dl. - -For more information, contact phihag@phihag.de .''' - - -class TestInfoJSON(unittest.TestCase): - def setUp(self): - # Clear old files - self.tearDown() - - def test_info_json(self): - ie = youtube_dl.extractor.YoutubeIE() - ydl = YoutubeDL(params) - ydl.add_info_extractor(ie) - ydl.download([TEST_ID]) - self.assertTrue(os.path.exists(INFO_JSON_FILE)) - with io.open(INFO_JSON_FILE, 'r', encoding='utf-8') as jsonf: - jd = json.load(jsonf) - self.assertEqual(jd['upload_date'], '20121002') - self.assertEqual(jd['description'], EXPECTED_DESCRIPTION) - self.assertEqual(jd['id'], TEST_ID) - self.assertEqual(jd['extractor'], 'youtube') - self.assertEqual(jd['title'], '''youtube-dl test video "'/\ä↭𝕐''') - self.assertEqual(jd['uploader'], 'Philipp Hagemeister') - - self.assertTrue(os.path.exists(DESCRIPTION_FILE)) - with io.open(DESCRIPTION_FILE, 'r', encoding='utf-8') as descf: - descr = descf.read() - self.assertEqual(descr, EXPECTED_DESCRIPTION) - - def tearDown(self): - if os.path.exists(INFO_JSON_FILE): - os.remove(INFO_JSON_FILE) - if os.path.exists(DESCRIPTION_FILE): - os.remove(DESCRIPTION_FILE) - -if __name__ == '__main__': - unittest.main() diff --git a/youtube-dl b/youtube-dl index 49ec0137f18bc03474bde30d7c2948f257dbfa95..65d5ba3c3dfd1ca7d0b9adf52deb1a1715006cbd 100755 GIT binary patch delta 484269 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ν0PGdJ6U4y|QS|s6L zvlYesSH_bl^>;}MIO@rQZj0cJ)eQw*d7r3fguAp^3A@gz1O92XWxupm$!iVhUI7fF z4W9~{Ov!qqpki`b2?eO1KtlM&SGi4mqn==dGIPui;}Dm)uu1z9ES{#f&AB?Z=?ccZ>rX?))ZEI=H> z-V_d`#ik5yK$_dSjs&SknHPS(5q5phUW@YRY1t8*8k2Mw8@`{r#b>znt*zw|`g@lu z|JFrji5aYzGUfI%vf}y-g9V% zz|%1@qK)A=BNf3@dxNkq9{cu`=m;jJjVs-XXln~(sG>2z#iD~Xzoh(eVrP3FPN63R z*M-|1xlf8kB!9Tt9ylDECLXT6>kx=A>#2#Zv}OKEV{=(7CPt%%mBwigENmwcz|YtZ zY=^^25DcwnGE(|=+ih=>R&d*~xd`J8i!ZKT393>TG5Ro@V4S(T**N$r!3g_mMb
  • ${*}qKWEPZ&$~8*ViAs_ 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

    %eUw-=&RyD!szyBKS-r<4makN6e5QJ} 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�lO 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 z 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 z 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 -{#d&{8Y0 zfdH0A$sz#26U@eL@zeT)4v3cKsxnnX(?kbv({y^Ygc%)r1$-tbmwKu_nJ3U3f3{t$Rp~yzxPBe6+us;& z-kS)EJ>p@fZ2zEsXIXDN@9WK^5^cYZC|F`48!ZX z@uaiLVi_MGV^IC5$j2nf%S>{>VH1o5wDCWZrS~t+t-a`ygt=v*CN>&Ny3sTE&5WY>&>U1I3{z32#QuDX17JK4;e8utLa-AXS414h#klb_0hhwQ&)d5{ zGMB-qi(gD^6S}Ib=T$CAqR!C8-$7iBj9Gb z7nIizJvybUkF3DPo=${Xopta9JKnE2ypYoddUO$Yn=YT);nyT?E*53d)@F+sIO4r! z34Mof{@NF=%hHiX8*25fmddPxw)!|AGHq$L83Ms1WUjZ&)WL;`i)AT@H#c4j{owaj zj62*>j=+qj&3?Kli!MOVW~-um0%V;oWX9RVF8v)du!h?&vzMvZU&~9Tc2oKXjaF?n zikbD~Z|>9^CFlncWM`zh#BB~&BIM-rSTw;*`rcYCS1$AA;{}}6M?5n93gBvh_}X8= zhK0;ki69}${3)KwwOfw9&|nY7Q*Owh#@o-vbt>5MHFPWm@SqW#~WE;Eg#>k<>EEkklrHq6|zH`a6^ zGen170#%AKni=vGdz(cpWOxrz*$d+B@xs+Uvl1pYlJp(Q(Ww9~Lq>}IyHS^C9Qu?? z@ka7YS<)P(1-Z)-sq|p#IH)^2K^dI@FVi!2?Ml>1>?Uos@`YO=IxsFXE4lLl zQw!ForoH+l;itX<>{C+P)Ifr{-3~@4YSf>{E^U*0J9bC5-jAO(opxX zHx->G2%8@gAK3tbWhO%3mq{iq?9aD^v8NP2-r1Pb*Y*zOCD3~*(b5WkdK!FSxhWqC z{6RBa;H;`PNcq+``L@uhR!H$FM8wW3$K6`;9hNK?Z#oC@oB2PEjYJM+(JfmyoVqA8 zJ+)iNy_lKg576bQtV#qpyvF;k2}sq@Q~C3Phjvx{`nUjd{+36+OuSEzB(P#ZZzLX% zHBClehnReJOw60lwjHOws?{8U<}+pafI`dp6*D~#dwGRQ$tv^$WODiRPAMAUyw2=z zv^Wby)-;m45GJ;rRRQc7TB?xn1R6-u^ud7wOV5jfWd=ojorZr_9eSGKH?5XX++ECj zpE=l%UiS4$Mx>D!p#p^xvO1mtv+q!cle0(GlhMzlvnC-D>(Z^1rUGL& z6qmkxGgzfM?E$yBOM)n>rW)Y@ZG|froDLDe;G7Z4iL@_6#6Bu}^mbllYo^DDw5Bs7c z6YxZib4qqV&=hC5z7V3&nJ6mf%F|pw+z{8z5O|Bc`jg6Qki)C8eUNn=(sVY=QkYx4 zu_IED%hI8+e9WLH&|Nyp{e>czIdLi~sh6v;%P_p!P@%R%Fv4{^h?SAhEmjt5jrKE@ z_7u=~xqFn^tDICwCO()lw~*@Q9E=r?LKFuq+UpYS~mm@5#;z>X`*olM^yu8HOH z(Ng8Td{wBd4ezjN$PZVUXvip@VF~F&03y!>^TeTDYom@EhelwRIYJ9`BiABj>rg_C zo})EVO#upjSln$?aL6t&=Do}BGhu>ep7)wQY?_|3DYG@aU0^iUw z$>yM^2TQh1H;xL<#_kiCAO+}OPWWeIx3IOuNuzOmG?t3J3TM-mioafjbULgh`7cvJ zZg5mb7{lHIW&UhLqAGw50E>W{t;acprVLwnphWx0;?*s%P zIFcdVzh=`41$^qadVXRtG_Z zxX<$vn>e6}GN$qowr`Tz^a6w{m48-i-S!sWe{n#N#r{Q2ta+&{ibn;xfQ8rVu`GcmrjU|KAZ#oU1}`R;lsI2^X;m(yS^}6I#uB~OudEpQz1m!j z4A(VE(S+FT#R_lKN3rVzPZgloOXt%(_t7d1gsyR40 ziBs3+cRX6%6@2&ho8my?JPkAdTLNIERM=sWq?ocZ>XL`4CF&{>Y^|mKFzK`;X}fND zy2)zCfdh;~TPy-3R@7LJjQIwHSNu!aI%++68RtU&G)S}ZzXcs=K>x~U3sn=F=zqU$ z)}j7u@djXLZ(?g|VQupt4fTJ%DWcT2zLy7)e3$fkLS5svm9wQrjYD~?;^YG)V z7{|n>QB3M{B%%sV(QH1S2ucZy&ihM#$=r5cT@JTh#S4v~80gFwsi7J5k4n)5TJ|vg zQ6B%38xF9?2dmtvPbPta8IxktOjdGEq*WXql zg9W^PY%Ey4KRs~YqmTj)TXZjd$CgD^7I`m)4_dW2~ z`1pQpdV{^PH`VJwafZ^)w}9$N9*wv)R7#Whs;Z1>nW*%Yk>UJGKHM?CDj%P!tX?tB zJQy=!qb_2REQ*}r_^%* zeF2p27nBKue*c z;!?3PX@^r7)r$fYfO%h8Ibq;ms=*Da5W=fI>;Fz;Dn#wC*xa_P@^FT0)6PQZ7Tm4O zs7jT=Q`7z^o;$I2;QO*^;Q?AePazxP{0X>ROmN`Bo|-){D1Z=CeVeUkk;M#6WsJPE zr?4{E!ti|SUT5dm81h>4sc%PImzRSLLMO+YE4m<+_4p|?ooVx}`O=$lpLDKky`F9SYsWnTwxsK-NWYjKqU zE-#OVeQ(!P@v@+K!SXI?%bViz>30AjhWes}PhS0IO4l)CVOccSVuN>kRvxOI$m1Vk zN*=LU2SIFPEUR~TS0=1rubyjtUVsm{9&!T^?)0lxRRn2`n$5Sdlx4j@g<_nR%pz)?vs~eyJs6JXoDU}xoJS>S|#7{lo?&UPus#@_C*ztiz zT<_GplKzo89TQ~h`!;@Oqil}aGjVp*c&Tb`OAj7|-!@*QGMs>Vo83^!adJsg!sAr@ z=XeL4Fg4n*Yr%fSoAmnK6k$+|mPE`eh9sF+Vk?t(cuIsm4w}>{62`1eX*qoCyNq6m zLc*{BAvj^TW_?0s3S)74KeenW9c_tdl)8cVxx~9vH?0e`@&hmxC`aEL$Io9? z%NN#VcEi^4^OJy;d0($bQz^MH3@1Ahe&R|sZ_l3{-qG29up`UH+2>DY)n<(6dJMn% z)T=5BWcp7Emc|~X@gZtfd~Q1twy2h6Z3J4xjnZk*(1+FtXU z+*d<*uRc%O_;uUl*R*I8*s_03G78QvbS-f6X^n!~2qglJm41wh)`Ab!&$szwL79H!=arkC~{d^l0<{;YXMW4h5|!gFQz%4^M2h2Zz$^dj4-CE#a{< z?ZEu}zMbKQbzp8Df>fiSQ^b@Z;ifp*QH#kwEiQda< zw05+T@t4e(I`-2i`Z=yk-awLz!C!6|8}?fllj_tlYLQPNdvPZC_y9cu{FwIqo}Fg? zqDX|n%UYAxEM~k%#8L|`f(Ku!7$(`lFL8q0sN>0TF{S0@hGOEx57P3VzpcJ4z-GXt zUwHu9$zl8h7XzTmfb$N+-cajJ! z664Q$U-bO(Nvj6)cYir`F9=7LL?OZ%?!o{Q*znfLf~^RLp7TEz+l!VU7<;i>wDR*0UnMBRybL@?wyCHa79 zY4|cN|4^Vift2)EQKjR7#c;s&jbRlXkRo?>A$B6=@H8@ja%|feJ)h_OkU%+*u4eU^YeX-90?NOwS7fI`+y7db+ z;f}(4Aww2<=@;R?IgA3q-JeE^42H8%nDse5xHJxT@lMr9UYHM&fh1_@__BZ-b7(Vy zZH0XzYu5=roC9E74ySkd$ZFyjxg1Jua3NAUpr-s<_?$G!TIPLzB;AMNxIlc5HtM|m z&AXcUU$sv`kDA&I=?Z$8ITG~E`SdtcIot`gsF=nFR;V_)-33|1xT_2I&v|)!2Qw|R z1On1^)89z;zcfJ{2MCKIg-C$w70M~~@fKAXTa9)RYY3+(oEbbhl8_cL=+xM5&AJeF zT-O}Y@t(d4;p9>>N6|tE=N^1r*xeqg9ya$L4Cm5O3{WYBCAL(w%gxby?=9CX=}y}a zuyZTxFr={X95Of1RJTHqmStH#0x`&=mi7ds`=C)(v*^jc{G*CJ?v4N(f%+Tvk{uz9 zwvK_|4Q{%)>5{<_xZ)r8;`J8LGTduxJqvB!H>4c7Ou8q*c8y8hl-!H%V%k~1xho-h z<)A^^hzX_>GtHg!p@FL?*VUsTj@jnbe3~Gh&F|3n&0Hg428H|;+Kr7{Hf-^r0?qZz z9^q93H2a0AnFL7BU^=p=JV^@>UL>?MP2V|ov zLAEwL6do5!#=;fNDR2#bup=TfzdcM4vg1x4BUgK+9P&|cvxzPQ5G1O5=s{FN+q25`zQnC9^W2*iJtP03(o zN=a+~p()3tI#RxKXrlbd+*BpUP;xd@z{HQ_bc7GnO;Tgt$_MS0ZMP@U56qmEajBP` zhtrgEBgx&xK+Ofn8#jCV!RMzTm_t6)hFg`GWB+SFv4-Lv6-?-_DHNx$Ir0*SRwd`IHtVA{i z2+jTgW)0UC%6|vGPTWSs_hg%$uQ7q=ePmi55IDCEBVRksW*dn$I^eMDb9dRsfy{Nd z#^rqWaJ()GSO!Xba#bDKwVdl7NLOI&!Y*~b78SZ-?)aDpR|Q`>u0nx6v)r?ssN;EJ zqc)hBl*^+B+}>L5)gU0Hr)rv{k|w6{HnB`pichcEt1^4Hdo#P^dAslE!}8UQf@A1` z!Y@Aq;Rr*Qta5LN>vtE>( zvrAcA%) z{2+wMnP+gO?q$uzFf?V@NQ&XSsTZP}?D_sXi+oO9Sk_K>zn3FlGD#ocG_Oze{lWe`Y1Z z1+eX&zH?qu@c+bWtw6)T{mS!Y#3AcVE+Hb#F}1q-`(Oj z=sdvQjkvA0@`=_Qr$M$6Q^zgNYIXoPnpWZaP)8~KODY`K`fbBbVziNL&0@9EKQEc% zYHQqnP*S5)L@-vxWIzIms8#2nLPS+8pNB$FO1jrx>)!JLn6%?pFTjIBu~X-8C1i(2 z`gUxJyif5@eVU!RfxRatEE(A`zvb=l~?nL}E9!Ut&}sFeA6wptoiO_I2^>VZ+#clf~dwF*CEI zuPZ9|oX!+}N{Bl)`tC~-bl*`eb)#o-pBZ-3ahP1}LPcrZ?pkyVcoKAwWGh0WUEG2_{+c^Zp+2{g3#|y4lAar`E(0%|)UQg07R7JytZpL0J~$&R zp@B?)3*ey#nZUw5{Fy4W@nlWuin`YDpx{;;CCnSb<5UsLQS@T;<7T)y*~(e^+DqTF z&qsiL7Wy7z4o>%|oMs?08IcrCjr>(Uc*oVt?@O{rSm8RH)?ASfS$)mvL82)iNohXn zemW8!Q9K!TgVd3a z(<63s|JzZSzIxDKvDCyI9S#v*=7ZZhSK@d)HnL zw2fJtYgNlh0@nB<;85Ynz zt_~!0^HWrwiHozz|3>q4MmkU(L}vk^^~oBsV5WeE30p@FV1;gB4-6<6f%4z#18ktw zjQ7cV8xbXtXA^@@7&pmC+-@ef^IC(F9%YYf{;GtKdQ(`LxNS3rh-Ol7ZW5PFD( z;1g!$qJ-A)eaAOObqmcECDR15B#cqh1~_C9U(x2?PKHwIQET8(Kwv+jvOzA#^CxkA?IFg(%QTk-v9bMC@KJW8*m1WR%P2g#m9S}w79?^(kgF@ql|ez&j! zFW_KD*GJf^KfUF(1i9nm0+!EY8s8cMLMRFYfJ|NcNI6S#)xtRa zq^mc3;qARM(#392O4|Mg2D-6Jp9_#`Be=vOv6(~+2gS$`<@`z!5$|OY6K36OWH72R&1!nYk zL51#ePWmUoWf?soz_#lriu`GHaDeXt0+i_J!x^rhC?CQT7&&M86w=0k?P6XzC~f2_ zg3@1;zcb<#P(No!?Uh%B`Vff!vy6j21c^20tsCrt)M# z<>09v)!gxEY?0LK?7<{grHgudJdjV)j{Q0or!Otd_`KK-EB=R|mZpe_Bzf2wvuj>D zG7cGN`TWp!!yH!xE4XmlfKfc^(1Rabde{62-2%{o{9mkv%6D%Yc{X}OEw2J6WIu|) zPu`&o6cVDpk?HLqz+`-FCg>Iv@aG0A8B?t;qcVpDcvQD8kV*I!_=uZ!a@=Ap{TBoj zky|;5Z+r@aqxP2P){u7ri3}Fdcx_!)P|U6%Azt`3_0_)zEY>_$%_?nP%pGkP)v=9U zSk9)0D{DYQsfrMGW`f)5t)-!9lcx+G{Yr(vx+Iy-`L$M-Bi!s~$YV&@3#7M}8{GES zQgl!0F$6k4HlqZshHQCQQzrhi7i*Nx{K@rw-6{h1&z>tA=70BGabMsnApdnS>%%C^ z$o@T0zfH+S0mn;00D(aLzm`6HRBY_#ejt4(84ZFO$nu-1gM}aq4Nv)GaAv^*8D-Hq z8|%}^U2E`{-CwRU_6jbTx(RO$`Q4^ovf5}H$`q2(qik5Fn8?bsEFy5IOAL8vgAdXY zDWF;d8O26EweN_iGI)#1$`a23QBx+lleU!<^E4a8cm))Vq0e0vGbYrx6%?y})qctS zSk5h~Y6tKgJCE;ltw(fx&`1^McWn`Os*fjq;95lZww0CggL~#4brkXdGWnx)O6us8 zhfVp@0+mi?tG}u7NH~jJ=$DO<$>T>_Tnh2Ke0>d zua}9_=_rkxTa_xJL12h0F{{%-a(5nrKl%fk8fj93sRS|WL&X1TV#%>=5Im&+#Xz5N zOCMnGX=ZBk=_`$|;05jmu(FFo6llmq&yzrlzj>*i2e&Ori`|lB^N*o2Wuh^2{ZY)C zD{vn$lT;i(3Z(!M8BNW>fP2Ee6(8s1ZXWR0h4u6123xmrHxwO+B3Fe!N;o+`ux88V z%Z3w>)uriW5~Fjo%_2{*xFzw}9_wp%O%>)Pa9pi(nWqU-@y`$glwex?7NB66ACdex z?w-5q=3m3y10Q9fG#T{477s}ofD(LhJ~&q^yk)FP<*W)TT*C-_a=F~$b}qN3z|!Cl z_O4V_7H3!zhO>9H0Ao4wDH-#`JMZ4|_$4d}G>ppppxfwifk2W&cwvqRN0?v585dJ0 zeFud+qL3~#kKi{6n3}9AoLPqtZFFm-%~AFh>5_X=_+txc&#XTuFVweD zHc6Ufw1ctfPBJC*(iigIqWOPvG*djmAvpfuS*Zmag7u$k5+NC!f(qYHBSeZI&$m(@ z6B+{HU*Ag6*MmY!5rBq(WNk)F#Fb=QFO-a07OQzB7GOuyYz*au7L1@wrzI~VL+7S_ z?RuhGsXK4M(j&X^^>KUJIDt>`hK8U9q&G^AY;c+Dkd;n4>7HL)h09DeOOEv$ z>j$@y>923^qR{5RW4=0~z6b^hzlHHL#e#b$2A@NqTrX;X7vZ1GToiwmoma#N-kC?m z*b?eq>l|6Qj*oU{&x-R4n_Ksvs>D*%$Icx&WJ3F%uBuuoQ0h&DiV)xt z<8b4yCw)=M7yT;P^Z$5qCUKkq(A-zb#a8KvF~T{|5xn9+oa0lvoas8?p>c^ z&oGh5<{;j5I&oUGNEyS&iI|B)d&yZy_Tgu&>Soecd!CA7L6`!px5EYJ2B!l?Ndgwu z|ITIOKqY|CUJgKywMZ|yBYSqJ$r|Z5`kRcXPnW@TP$wQ5GG0?Cp4Acp8WuT0rzX+NKdahew6t)W(21nLbCgSJUGw!FQ?QVE{Jh>mxMlUQ|-8%(O z*Wr?t>4Y)&fm_EPZ-$0`wlvr?LGQ>hYhvpr5f30W5F#%p$8sShKq?DTR?7sSG)mGY z1aC`a9v=LXPQ71Lf}-*S6l`<)21gtb2sECdT54j`uDejB7cG->`gZq@X# z4f@B_hI*`fV(2C}*)^Abf?70n#J?S`{1^?4d2~kr`bvo&s`RS{gpP_7Oe0X-?@fY* zmd3@c8pV?}D7Slt{~WiCp=`V#^F2HLmL43oNoBuA>?qqasY7)IFI^Kb>-0P(lK)Zp zLD8X^sx$uD0i{_pMoiMs6P*4Rb_D1%IJ~~RY~tpfrYxJX&a|g7w(bAp>zkr1?Y1m4 zY}>Yx8Fq$k+h&F%PT00>+sv?S+qOHZ{<_^&w@3HGdH68Chcm|BYp=N`CSHO5CpZtpe_B zvt3t{)(@pelD-T>adqgL5m8$U0@r#S^?_O%b>;D9Fdq53N06jqYFy!{rs1;7o)A39 zml%pCsv=<6DB%&>$b02KMF*(TG_C$v8x?tucVGSPe8 zWeiYI;Vh$Zd`Zfb1sPz)?fn8lx$?}-u$vSSaj?zi`xSi^$Y;RrXWVEgaTNuc+G@Yk zchj(H34L~uCug$wiyVN_lYAfLxEid_te~*i&($bNlUf-o{Hz*L1c$nYDkoa4v}oMJ z1}!uq0gD?VmS&{($_do#5ATfa=c9rSm z;*~{IK-tNI4Ue}XbCfdk*%(=S%Q+c;A{@p+uZ-o0=Xtt}X4-AfHl&dah*La9;;$Pc z+IO8U7u?~8iAA|#Nd1iB6{p!9+BIrmG^Kl88ITzhmF>M+ueh2=-j)&t1 zcI-x^!h)WBqkrgopP(d}iGGeKqK6=QPO^%PF6hZYlfr_>_C^55k^+b;e>9tu+GI5p z_@dX%Gg4zMB!+PjvWNZTOU|fo%$6_JW51^UU4^BJ_X8sBwN~bN`m?%oU5u)r7akm_ zSR!^RgV$Ew)no5cc#n>D^6PVGXs!F*R+l%9ELNuCPf-=d-i=MOW@H_38#7U~ixNa_ zd)p>GAd2Vd^^OdtS_E)aZQtg4cUO6YdU$EmwV7K;@R*GSf4EN@(x|muIsQv!NcTJ2 zOcsakV5^nIDo321WtuXNV&>)5h_f?i=H#3>Ei*H7@@R)UMM~cbzkvwW@m>hs4D^=( zYTh*FnTs*n_DD_!Dc6|<>l|(cZ3Z2^jLFfC5q3tl3}27=y*|K!lP|s66eIrb#SA~~Z1KbcCO4)bg) z>`KydnI?W^DSu9ZOzXzG)xrz1yej6U+ukm8J=*k|e+6+YY zSrv+-uBy0Dq3wBgFQ2(LcR{3r=ETH#hJ;0akx8|asPcdm$bc4$KqO>L+gcu0^72G? zQRy=8S^>46IIgEQig4=qtwA^WL3>2z1v25#Cy2W21nThZwK_0`^-XJ3rRmI_Nsk?Q z`(jn5nUr3-7=v?z#hBk_-s0N8Bj|e=xvuNNxJ>*S(09wsT(tjN0^izXA-1Z2a<5T& z21R7?;DZ);A?k`|m#!|g?1Ub-DS2Y94T zVTAGJ^ezA4{rTVIDaj>h;J^NNm*E=>fztep1|Im&@TOD$Fm3d^A*qM@=g?#U2MzPz zhBwKKEx>4i@4e<*2m%BwA4$qqmAR@zF$gR@^TUhMeI=P4%`CPKORPXb!oE)6(<^v> zL1y>D0E`rQgvD{vE(n)G!h|v`u8tBdoVdSUs|+~NZ|M8#08Ei|Axe>fa?x|cf(n;{ z=~17yUMg(xS%UQTwo8tbzMu?AU;SE%4f34OwFN*)TuMv?c6ZTV83m1nHMH=oD$f7I zbk&7>$bL7$EV4_CjCZD7vO{QZqC)t7DLcEG_cvdcx5$xLYkJm4Kw`M*t@e4m_)=M66F-u-*hTo>dF{E;Ec+8u)Egsa{`# zi8->BnVuHt;_?GmSws}vf|F-cTECI!FX>GR5>EY_=W{%q!Th-!CuZ!-M`?B|wcl=9 zKKc}G8hL}Mv5PD12Xb>n`yczPQSm$X9A`!2Dt>n9+yf?j z(!f7S0f=4dLCr7jTia3f)~I6&DeO5BPe~)I85t4j3v=Sl&-+SW7vXiF!eOzj2Fd^= z!+LvOKkTyb74B56jWh)leUUI%LneLI1GEm|wT&Pp-#{kVC5a@CUn>`k+JaAVol+h$ zFk5xX@Hao2@`@a26vWMx81xXgzfsJE(c{+IQ0q*qFxp5~66(z!^okXp%@zKGNxDzq zK6{~}sOe&aoe=}xk|OQy*aJ4Qxo|*rdGJ?{=nG!m)7XprRPPK}*C$6e$IT(gkMrBd zvq@1XDlzv@q$-I;Sy4suoC24%oh_xn2{NP3<3ev1g5!)3Z6p&o<-nHmT$CAfmv$To z%II}1iG>u`T;Io$vnNz_3s z-ZnTAW)hNnRY==_rPJ%cfk3vZI6y^I&$fD02ba7+lTnF zwmc$z$}Q48!we*RE{h5FQ59Fdx!K?4l-*}gQyXS*s=6&$a=4v=={WGeKLs-LBxDo`fhB%6j{ zKe+R`NLL9omHT$!W4)Ttkc4AH;%D2H*N@7D(CJ49;rF96gsZLH>TKQ|EM$`sCF-M1 zJF|(-3+HyH3l6m%eL$1WsTM2&*2b>r;hfP)k$zjoS)|7+YyBZX@p!jRgp6+NoZcUU zbg+-)wJBYn7tyX+0u(y_x_el&&$Q1|gIkAp3)U{y%pj^qhM#jr4(M7^ z{^kuLLnZn&sP zp-cIx_MRvw3OrBe;AZq0od=`5ny#0L|}%u(4PR}p0(U8a+& z6!jbsDVXTe^8jYbKZFig*9UULNNA~$(h*l5qr97)p~f-lrkQ8LGbRLpO!fS1E$U9;``=ft> z@IT_qKPld5n>C1r8fLEvRZe zC-eBt88l6|GMoyi`Z9e?8lLSsnOd6Rwu)ZxYiOennwO{*${++pmkAOni(0E!+tjz- zJC>=Rr&;60cKV2@(AeV<`sBGD!GNVRX)*RfX{%%cp8H z4RkcT@n2)pn(T;QCT06J>T?Vn2d5>CIxyW)c>oFNyuzPeqCg>smgOry!&1X-G6xrRwrDBS zz|vfu`=r@hv;fE=GzVm8a9&Z)Vx!w$908ER??t99F?H>72adQ(*L$U#ik9-$@1ONu z=#q86FdB3tQhozSGn`q9`M_vW=63O@uCGvf{p}+pWFc!kDB@@v#|@gdG~wJJU^R<2 z#)Mb!=*1PGi;srjWjUG`e>yuO4TPwvx+CP(0O#xu34l%p&-fGK`4p3^kr7;nY23?A2!WQE%n1F_q5a{!$YXWX31nru(U+uNc}C@N>mI@OfVl;k4e{@-8iyKH zt@`(d`3-sfNbVB=!b%n<0Z00OO;jpXH65|pP`!^-&C=W((t9pfdofem@Q)T-q*tXf zSP}T014#KVFD+=yBR8ZzJ)$26>Gjek10bdkGOo1lPmXKkm__tkhNX&JF^Q3i6|fS> z{3HhZ#4xMG3b-;I_C&@C=G4{bqDKMjN#cbLiM0FQ$^^)t3W>-nq+~_N_MDKs0~#r% zl*o5-H{C2%(#?A+oT*5$HsvAx0SbYkQY~obPG-LwM6L=X3Puj!PYdUmuc90qucyY? zR2lw8Uv1?$7F>^}DCtIcZM9;`F3A>UdBmzfDxQ^XqPqz2CC)38Bd+$CPaeIm2sW>(A?wWjN5%=$(8 z;sy9crO|*|p;B|eQQ2fLG{*sc>IB%(FYw*d!IMr*G`(W z(Ie2Fb^5tWvxJZ^Uc2DhR{`H)l2xV1r4tG^X_-+Y*XGmNcLP|updg%A@oryM{3C?y zSQGwxZZ&WMy`_Z{P2d4gT}J9g(`U3v&@M>c=p&#J+bf$PEp;jk`Az`g>3Yh&V}+T- z7OWWGys67cWPaWFKorInLwBTP_DK_hcpEn2JH z=-~8;>dalPFMUtn?Zp_%eXtF@iF{!UATY_*HQC8ZImVpQjmN(!m~DPwL!*BzT1Ai1 zg5f}^G{Zo#UNB@&CvX6G3aPaHbt3u>nft-rhj*y!e^!CGhXE~>>t?z%r}3;0FiKb8 z%$gpnlVHcUj_-M_!QP!Bf$+|jwSN!B#w)fhpwe`!&JyH4ak{JV7BhN?1iO;nt1c>D zfe?4ZkXim*6VZMLsSYitdJZ-LzfV8b%OKU95e{c%^sN|^u8soSc+lFYnEXhYRqF1$aF2Q@# zqks@S@vaxIs{jM)pq83dt^q*rvBgVeyuWYpAmfgIs#Q~v_&PU0ZqGd6W-u(a`U~Bf-makaCiq07?eY^V8ftJN%0KGr^8T+`^b!OIc4O*g zGWGKeu+gKqKuoP+xASZ5llkN&E&<&H=Kz#;&rwbL-A)L#Y`ai(^d7lRNp4tobZul< zoPJUVVSjOPJ8S*PRibvB080Gh_IGp!U4i!dFN5wdcwh9^t#$a7>@r1GaFz&sH2M>! z;t9k&o{0$X$41iwD%7o6i<&%rsVl|Sce#e4)c1}`DshiBT~x4I$H$?0CgtSgz9MS> zOYTk+OI@G9#Bdz0R=D~lX#N8<#oTEqO87o$oxKH#%(-1m5&7nBj}Y>gjf%Bwl>A8| zR8S7NZr9|xI3vxXwI7ZPp{&`AUcz`YjH?QK73Mm?XLY4a7kH=4v&iokbkKBHt?;f` zuxM}03i@c42$yE!h>fAr@@64TmbKPK4d}V-aRH=p(6$8$G-Tv9&PD!OOK(`;R=$z# zRY$iM)feJ?;I8jt%XL?Z^;5xxiR+$$;|9;P@#0>v$A*P#PG{v%@ay@+emc%7;GZGD zw+Q9Oe+}Mr$iZ3v)$BH>l7kcf)8`)56oTY`_qmdg$%F?WILTk|&cMRe+#VfYN1Ip(m8YDV-ZE1GePjjH!NdDiP3XxIC@D z^<|5fw1_RD#I2M7R>B&>pbF(pSl|+nk%}cW@TwmqByG3=_}c zF5|>DE-OrOmD}d+sHy5b(7J`MsQ_IwQj%0Etj4SSS0Vg;$*>U@jhr4eHCG-z&kT+p5vUA1+HD-N_%tHbXQ$_%>gz{D2I=E#UHo zk;PWfLF>2h@V1ZY-;Ic%t09cNyET`OffGAVUX2WTbe$_7q&t@2-r&9ZozwS=laTuG znQJRgH|Li}KPJ88hTGFy~HtPVX89fr;BjSAmD* z>_xRByUKrmXLSXQI4ZAh8v(F9WtO_}2c*JW_0Q&#N!2|SBcORe=2>wYR}Xj!9_Vip(nm_Je1$dogqB1L)W`JCA8S=x>c zNKT`9F3Kbn#*QM(7}ncBY|sEc=XCi~f@G#M;pMJQZ(6_hA0E57egiQ5RQA~tdkW;q zCIWm__s%@BwOIEfiL?atp}6!bL^qXue}#M9`)Whyg7JDxW6dLngNoVI5ZZ8ijx!-c znJO5>WgShq;Jy6}RQDiZ4=(6r-3TfV7@)lOzwEe+JP#b9#mLI3;egYr#0@?y7*&Ja zhvWi%hCm(?@kYApg#?K2;-ts1`$Z45o0SRKrhr8_wgC+Sg};|e(2_P?)eUTOClx6K zj6)~FI(uo&dlxvZSMP3bBETxwk6a%x>K~sJ&5H=q^P-sUEocPD(40p`e#f07&S~|* zzXjZm%x2K?eBHR65Pi^EJ_sWWn>3o;X@9`$u&CKuC?tVytOKCaU!K=RATG*-{0%-V z=^w{FL2T^gL)MCw>Z)@}-GL&DAC>LuMk|z|@DCM{szYaXh@wi(2iaJ-cb;rPwJfkOKmf`wWWV>y3Uo}FcogO zArFDH-^2EPXu5^{_K1;5;-i2W>LPy8j2MTw-I$Au0}!f}vBPnu^x%0q@*0j`^*|Gn zd6c2yzVYm0QCF^EJXr-CfrRP?Ix$X9h*~Qwrinp4i|V@xu^*i}OojvI!>1_xLq5n` z`rHpp$^9N4Iw4p>rsfVZp_03f;}h|FHqxP+N-}&L&Rrg_x0rau#;E{usW=uw)v%eP zp`)pOv&2-Bydx(O4tN&kqu}CVimA+{Y8hW<<--hymH5&smux9pTifb}O_XP_uVm!S z#BO3wm!~NC8w4@0<{o+|sK}Le)S;{Aj1o4ehmbVT(})73sIA8;*6a=#F(MU{f%2=UFumT%4U`)LWYu zjEkN3f!$1Al@8}I&^gI`S*XuqJP~wXW?U(+aO2k~6+$Q`-xT2f_aZOnB&zTsX6bRd z)B*xvzpRPr2I@|sZJ#x?kP^U%7yasGYt=^5N4$)$-j6AxHHF`PX~zi9T^~7NfknRT z0?K%h23v2d@u8vsNZi$0*Rw)k?W;oRw6!8`0gqBUgZK7Tz^9ANULO>EFQRSAku1gp zN5{}>uAHUj;{(8nA~VCl>coxTS3{BL4|j0Dw|G;F-G?Xi^NtPAE1q{N>xxEn!x7P! z_U4;@i0bl4E)>)76*8&l_9hGfCqFTWagx-YD)`EwRb!GkwtPW5#uRr293SfcF~S5{ zTRh~3{=x-^Aj!9l#P{iat&_XniAFt;Tt;$kGKKf*V*!Y^*dj<$T10_l|T-cm9$u@v5@^LBCXBT)d&0 z&Nx6_UaGs7gRVU-mw4 z9%WMRn0*d~`V?jwwbA2^JfLF7Zug~tfFC~yI4#91#I<*ral{N1arI}{x!klGf5A$& z;a{MX;b&muN|+&r4ef!N_+46+eLTv7J}`j1o8T^{r&=WP?gWRtVh8kst|~Jj4<@Hq zUrnVzxv=wuaB5b~PXh1cu)O2GD?#~tXjI{x684}A4d`}|CG1q*oIwgX+ZGU<8W!y3 z%@o%kB^#27i)6~NhLPXNq?n$ooZtuQQdjBJQ6C9zmr(VUk1LVw`{f{r1@NYg}K>2L=O|Bn7vS}$Kw*V_K^BkmI#ZNg!MFyr?r9K85A zQLH_;N009+F6`T*kVJ~DV#EzDPop zJzMBw679{weE{F3P4)9TfRLC+85HWF*lcZ?jHmSx;Xvxty_KD3Gw-8!U9j%Sds&}G6}!|wK*?wB zwg$vO>h%2r{ ztUO_oasXRTHB1{2Vlo+|L*~|Ha)Z3RFtRc*^0Z~G`BGOm3Efdp6B44 z_Eieg_!^dyv!KfY69*0+42m)S1EPsRyF!P<_40at|5iMec_howWI#!bOHvyv2hqWE zPFjEBaNuV<5qf0@og@g*0WMxnA#g6pkP%{O>aSJW9sQbc2NYI*EnmfUq>chSj!!eE z<)>96lSQxEbkWjl0&S~DF*~!0)2WG8*f`H=YZ-JpONpRz#%q&ZzM#yd<~effIkGjt zxqZNb#5q6y{^|#0=BtGIfYeT><jL|j2%YMWJ=2eKd*())x>wK~f81MCU? zFBHoBb~cf~QAxu|3v48m73&*%!Ie{7XCZu$7i-ZI$h;sJN?nC$p7+W6;7qXdV@G#T zvF8H09r$ArXK|kO4+j3mi%JPZuj<@b*pY0B$J^vHm(l~^>MS0bVtsMSKCZc= z&1{jeT}S}1KaNhk0}E7VT*%Gf?sN?S?|)AU<1N#*KLu6zz)hnQI>|>1aK`D27k|3b z^5Gp*wvRmQ#vQT?wyDP7;!iCE%m%%=$&)!kg*4b`t{hlDY)Pv5D`fB?V7KfNpDYD^>A< z>DPyybN-bGN{0x(SOTX#qrYeSi`sO<;8OxW_cf(YeX?klYQxe{_bZdIY^@gWzJ_WI zQI~1zSHsxK#4rPbECC&gMR2V}Vhmo)5@os4F@f=_!)j?=6@J!}JR$EjyQi;^$l~m1 zz7Z9GCKWAiwAMx*Px;Y)BO0Yp^kc5-@>iwh;#i1A6xITnkweV++eJ7se6^tWGhRk~ znMz;;mOeep$)AnINzT#GH3@jS5i=jkc(}r4l8sYRL@^$nQmAG-I-5ou+$zZO*A7a~ z9li6Ggm7|Ywy(AAROBuRL!}5}ZP6lqOrBhT=FNGmX8=4xtS{tp4Q9!OV4+P3wMsI0 zF-2BSZ(+nlvcyeE9o@@fMJSO`D1NdZ|M;Nd^+6;%7TG1vO)B0DGoq8?f$0qru9-9G zQ3%5oJz%k#V9a*!+QE(V%6+BTAx|Dez?!}*<*m6+_mo;gk4_%TDH4S~(58%--ku(i zdlO~_dw4v<4}|=-F+rZ(ayyx>S3NOn)ObEh(fK%^|Dzhb(X}p8gLVPQ(t4b#X?rsi z5%Wx2AeJ-9ZudzDZqZZ7w&t8{3Ixxu#Kt^7)Wqy?81v~tk&p*uHaWB#dPGvnFmj`* zGi#(EbZ-9xZ`fMVb{*A3nJ1Ug)EfanzQO#k>0Mti44YC2eSqY6d#)yS?OD>X^xP`D z{l-}pkZtXEqIj(Ua-rMCwqPiYE}n|keP@CI&oc`lT(jk!QtAa*wP`xfZUOa?&;kDa2SnFaYIM&}OHMq!ntChnqYUNz z2q@R0QfHuD!LRS{z+#rNJ*8VgseAl7fh%EH^+TRRy|v2O3%}~CWv>-a^|@OT3*TwU zMARuZ%fmDA15yP|V~N!r6%QRMfs^x+1>};3r9(<1NaA7}!(85CTEzfio&!7-TT4>) zh4Z%7U_0m2fA``44?nwPc+UTZ5Q%ew2mgZ*(HQO=AAUbe!cL3BmN6WN=D=b z_XLy_{9gJGdrF!uyQ;i|k_e9^P0J&V-z#m*d)vI|P(z-%ox9?s*ph)Lsi{+Jay^yF`0jHn1A(bJOb>$sb`In?QF$MYSKe%=I26c0lkJ zeUj~iv}zMJ47SeIyk0y8Fl(B5hE2B94Uz~hm}^|?aL({;4Icc_ZK4J3Q@r>nqsO1r zzxlgTpvr(+BJxq04A1|l1_Do8u150Y*KS^DMhh~Wptevg@trE$2h{ca`k5iJX?y+puUp4cxy0lo;d3>u;Y}ri@#_+ zdYaJ}j<|2Bfv=|JJ7dRI83=XO;tAzLWHg!#FjQqR%QdIYUG3(%@KHivb1lHov*kU3 zn2IKa>eQVfwh%>2YJ7Fo{>OGMOi3^J`3k7XxIm^J!>g|tW+?H{r75#&f^3~NBD}`r zb1oQ6zOe@l>URONwLvSc`Ls*?_IRV&C}Oud-Cq!>_PC1_r=NsVHzp`pxX9$7?~B*h zeh@iSdT`vr**lmTW!3zKJ}@LfK>snyx{oCj3E+!&1pej>7XOp_4RFx^o+cPL7+V|L z{L6%=eXvZazyJTr08dmt`_2GI{rt`V?=X%t(2VjoI_u~c31a8>slZ${`jE!}ro-2) zAd?_0Wj~v4J~6!4)v*emAE=81ue4g8Z}mFD%^H(6a%Cr#A8b*R70XraQw;*_veTp% zlESJ6(vt=d?U-kYOGEd{WBv`WjA50JQe+}k;uJ_IG$*$Rw5%OHM9`QOGp&n*gq}cA zmfTmOhEyjiJxsOxW($=l?86yzzbOhr@48=Jq~1`#_fotc?H;}|cX&7oO@=xdR^F`` zvEG`*f71XU-&0x1lNS4l^%wyXzV>B?%a~a7nB25}YQ>>^n&a$TPbPqD`(IuF*7pyg zEf>1M2X0TVnH6=`C4vQMrfO~Y$uLCVX-`)4-4kO?FRs@Xpo}=Z68PC77xCke3ftL&lIY5;e_V3)B0iGnNwefbCYr4Kc{W9t$@x zb(?v+3JqNUJeJjr!LfWc$baEc6|uj2CYw-otr^5p-j}&1Ggi5@7HMiI=mN3+%f*YG zjj2L|kv+C|R5yxQAx7y-PLu$*O(muR;#a8h)6eaa!=H8^c5DVvHxHShzZAU%vnj>lno`x2yv)&f_5MTHd0cn3X+L)*XE z<*1R*e{j~PB{>mVhq~0R^o-5Di4fpdRpVK?nfUoL;J#}v zIbGK*mK>l5A~h+JCXG=B2m&m2k1G8yX2swmQ5EDYP z5e?R`Kc5u|+S>4vB4HcW?pD*e&_8}_Bp|&%Gq;D@t5KZ7rE){zjZMI}30x57Jl?LHYCKh8cX0i_d@GKSI7i~PgZ`SbGdGvKH*|zg!BfD%PH`DJRG8V0? z5^`Ur2r1#rwJ(5T{ncUJh?uoOk=F{8GW3h|=G~l3#Sswe;<|@m1K^!DiZ^o|H@;=!-vL+iL2~*#CjVL+4u?XJY%b&G zz>uVfT>9CY>rL>hNAL=3n?o!jStN6C{lqi?D(=^f5q39tL1-zyfPuA`V_q(3bf zGnLnLpIC_O2+grn<4=r3LIx}$9z&1r(&JpfXN>>LK&dW~I20fW@oC?fDspLYqyHZxR}%>xC2-rq1R z0Lz=xg-fmjFByXYg9kDen<~P-DJeB)A@Tc``!5QcFm8E8SFMQ|yER#i~}`J5Oct&B9~4$Grd)y?wya;reVc**(4A!SFYS0|HF*&qKt zW0hW05@L{W{vWg|4@kEd|5JCAj3Dseq<%62;2r;*Cv|&TcA3C`{9s1@Pj@_I2YvH@ zTT98p!r-KU+Fz7SR>Lus!f|LIvr;+z@e|Sr(RuOK+TU5B#yqq`mK)A@81fwySKcn7 z9Erv3waY6}DU~$F^X7h-o5hA5YsY>Z;P>BKyqgu^47{VG^ zU%8}`N>n(P;tGeBMH-toA=|d?7}iEfq3jwg>b)m`VJos<5=IMhIVPdcBFto?yA7K{ zs)|6|WeNLI3(z9@q=w4ERVgj(1O$&`TJy6rYpTf@Tfh0Vwc{{;WAD|o>E?1Vs7h2~ z%$+=2F}Zm^+8AW*NHE{n5YKNtC~lmY0wE-BvJ`Wt6H_eQ`gM1B4Pi-NZB7xGx8L(N zHDrncP%7n=4D&`3M_J~UUtJx&y&NMyHx{d3pSmHraA8A+XDq! z+_<#I9H`W@!p-5eYEG7nb93Y{pdHfsW%Q=}5`r=`=M8_b!XG+fuay!!XN|2-SA8(a z1e-YW&Y7T$Jt5OLx1f>BFv=QII9aa+I}OqS4mmw_rS$NL>5&8f_W4_lbf~xoD0+lh znm-Gb|GaH<3DE!%n5)hSLJN*i>z%(XiZUih*p?$xsQ9^Q(dpSFmPwfEmPOzWC225a zs=|15v+m!YX&)RMJa4tAKH^${RJLGdnPdtELHFxggm>$)l4!{A>CyF7+^po@%~A~# zP^j-)ZrQo8Env{uQ>WLU02>~sfe)j|aLAhVLjO=fTId-3lE8F1nSmHR@fShg0Dnl| zVCsDO2HB3A3!Zz@6uy8GhSoScFw`*P6%>8@BvAW{nt#_g(vBZ zGh_M{nL7jjf~`R%T9%}`gx~hc%yXz5U|PFe)YsdR-=|fTe=MO4Z5kNWOSz=Zht}{u zZl*d_3r2*Db`18ov!|8NtVeCsH*nq$t5|2))QNW}0d#wc{SE}Y>5V9(rJfWHc?e2z z2*_vNu{V9F1&h-Lw)8=ronx?+p=YEK9)(KLPoJ32kCRM0W0;I&jh$}zmz)s}a0yAW zuGshRJxX-_6X;8n8;{4VhPRXP+8SCVPL838hZ8|7d-vq;ye!C)GhSKJWH6Aw7h9tz z1*{*c=N7!slyoJ>^>ilK>_ZZ z6NY6U}Jj;1o#7rFW6 zk4Eb7+M5c_IT(L#9JA>Z7Fn*3;{NBNSd;;WcImEe?~lEzOwRjN6l>c$(4W7cll*7e z0qrO=MA_u$*QE>O(JG|%@%N`Gn&itBu-~lynDS3{hTm2Nwz;Hm-AGD?a#Y`E-r3Zw$vI^qjWrJndE4rV zIJmG>XKNhEDjYwI-tg?%F#Rx+Uc&hF1sr9{IQGygC?u36t8V6{ekb|7kY%bi?euNpxfO^iNbGxF;1{!64m+DXFGipaOJ*|4BI#J&>#;|b1AU41mXOBl=C)bub6LvnZTQby#(1}HMg6JM zX{=9{MT)$y5dT(Wq9y;2hNF3065Q#ZB4e_Go`m{+X3PCAABah$|H0pG2FQZb1H=Ev z>FzW4x8>J&qPhP+Zvq^Q9i9Fdx&2#7`gg-tFU66lIY!K`BP!ZR5pm&kpBOdj96<|& zM0b9cKp1~ol&?#*2jmr*Ip~SAYvK+}K$6KUm}iI~ApC=&i>UQr)~cug*5H;NdD23# zlv3!#M}hc{zBXZDEMOR<%;?8ZLbQfKnr3AsM_rQ0@&GS;62w^^M!2pbqCO~Fz1Liq zBMMn)srt8v2Vl`X(Jz2_>O%!>U5kPs5dpQBOXJRyCRehrR*o%GYC;6)k1RM8=Bf6} z23zBo<=XUh=9eaTvH{VLKhrT`n+I`p6|B#8I+Z^KG2y^^s1w+%4uLo>6uu&==ri-I zzPjb_ObT<>b4c3)I8l^yFRIj?;}<%f6QP8+;x2&9BP- z$Jihf`G3fWnrD>2D?mX16Mpkm184r%2a@H^AW@qq)xe8@|9R-D3C{Jehs|x8;8j5X z+_%yOXZhFt9WsFin-Y|fmlm=}`xEvyVmt)K2Qgmusrl4b;qGZwPW!6vu zH3U)ROaqwcn_v=yy+Fq14&ZmF5}4I;%QR>}5hfZHI4d*Sz15Lyn-hemmalZH0!P~t zI@E8?NrM!ZkQY1#%R0JnC_{bC**Trfz5x}7A^Q5bc|2vfy$WtV#ud*n*VZPrKi4Id zo?HLj8#r%=VjohT;SGXi%R97o)g5e#P&@kD@P4!V@Fac0;>E%P8PMOd*U|OvYJJ?* zZ2Q>TIBxH!;ofIcLeh6OT{L}@Sv9GXk(pIxh%2LK^G;5+WiG^I@0>S33r`6#FR`;J zXeW;+#=69zw$hF~%{N^F5?DcRBRQ(sOh%erc{W-^?(U7^Rr=V?BT|s#9H*KVK5J0L z!k_fM0r$y*(OzAN2I&8t6%MZ8^akezT*eYJ10+vpK2^u-fz+v0O%Vt|L5G&uAQ#Lb zuj?kPFq2S(vwC0i#}~74W7aM+_dvmaHslmownOJ>?X$24F_zyESiAWd+5w$dvA@gm z+;K<|F`&3;S_L=O?^N4_-m{#o?5CaP3{QlHzhMD}+Jzk{44~uNO~EW6lt-SwkZF4J zjmN!iuK)mQ+%^oM29)+%PaNoPyVKzcZ>kF=#EwJv1^E%nISDJB9AS}`{bfCf?}wOK zr9#8@n)|g5`_x2wzT<5pwY#(kqBILUi9zD3zbIFlJAV|eaT_qELFRq`POO&mJTYEf zy5%oK5CPJ647fEQ5U*F@UppB%Ho824`s>VojS2}OhQ=h!tCJ{PUSC1V=-qACX#v)B zWv5pXOpevsO(~CDSg76*{9zpUY4$OK?h!O@7ST1r6*CwXurfBu0wP;#`quGe0V zx@n`b21ieLz`7zSulfFd5%X*JVw@di7BHTS-FHqA&(7TKG7I-$9yXC5 zIU_FCF10e~w!y0*y@74o>Ce|`jgxg+0pdI~G!6UAJC`W}a8|+}Urh)h(rL4|D&~}6 z%wD)1vF(cqBYEroK*$~q(yoYVB%t>=x`4=zz47$iLJ*~Jz5@K8Y6ccVCgMe$y$t^R zy%v$6l6NSZymc2ut;Ro9C05Is9%BG*gwnc%f27^lb@xfjXH1dd-QGe>K0?OXY> z(NByN*D9qFn_5T)SI+GWliPzi-9Iuq-U4aAh|47nwz%Ilmec{aIIy-V$skrgrDVgS zW%+NTu}&bCh=){%V}QvRIp4O^;5J2#2TwC`-QsUtnMr`sqc))6MCcz@%yy^z<=OFM zMQi!86#Ro{O^8GKu-YLAYuIt*Z z*tU}jD^|s}v0|%Yo0S!#VmlSvwr$(C&7JpqKK<{t|Gf|9$+*_RJegzl-g<9$74B^ypduPc?v#lXZ>4^gix z_9i^3b#q+-sJa|?8Q~9auYaApAG@)^?JjeKzTfIY#Qnj^DTHTxKlPlXzOfMO|PDxFv;3=SN(?JxZ6SJ`P1 z$W)j`y@4A(8&>J-YDUK(a4I?>cGXf-{Sg4A3N;-8F3}rzrDHzwLhWu&q~=h@SI+xP zjX@KVj=9GvJH O5IL~MzH%L6kDgT_#?fTuKTEm%(0F8WmJ$_0R;_boP;1_9`%xc zYko$@nNigkz%7{O4hFR5AAwvkpy_5Or&ABkwKQjI1fj3a?Bi`LTNJbKm|fW#RrR9j z>yPqt#wQr&zLR8Tq*Wc*sRz&s_U9p@fSc4s4}A<_Ged%`HV@A==vtnBH)J8H#J92? z7n77@{$WWmJa^mEkv*x=<0d-)K-GOgqs!^1!Woegk>RAdMFQ-JM2z%==(qDFJSP&4kja4;->$gAQq#8=*}C< z#DOQsn9?vn+yjn`^yv}~-z{y98JOWevnIg(GU8fj^;X{0caxg}567)6VDMOhWzvfexJG_z%umF;VQ9aam-CDYx+%MTF4)Dfv@eDkbCsg@&xeV9;;-j7`kfHhX= z$2n5eW)#NwQMX&?$DnCfSPiSBnCRz9vB-m^_LUrB5n%BX*fUZkl)Hh6=Zl9Vr-@uX zeY(1TpTN$1Zv@pHys5LH%|B?Xx0wY2xER1Lj^p^#Mz&$oSUM#iA5*H3DuKDj7pq(I zCQV(fn%77B`r3Q^HW>wcis5Zol~;5yd<umRMe1+rzE-iY#HYZT8Vb3dk1E(Sp zz(=8%BND#@o(=aO_vcEWHlQg_Dyh5+Gv};t9R+n;+YJD~CL%ZR6iq-hDZ$b-C0rMJ z==PtL4U>NqCD4I940bB#nj+a-j)$KpGnprEseS@Tms8>sOnw;P8l&qt-0pIlg7T7% zL}v*2=O&Tmr??^a6j1X!_ME`~zy+Sbp-!l7V>J^3vGE~?qrqWwh)jfl#;B%-qi}*& z02>uiumCw96o#ZCG#MR2(7Vsm`@1*V@3*!XG}{}F5(_*SGEtV~ZuU{qhBF9vB3NQz z_tV8dmQ>O*svnHj*eB+idmx}!iNz1CMmQK<-1_kt!4dKtS7n*Ar`E@&k_&Zer}Tfc zd{vNu9=6`LYAjieE6Fuosi+Xh#WzND2@cc;+d?K{5gLd_nh}}GUcf+ zr4e02^1S>!39;rKBR+~`X@{%6z`tXzWIsK(3Rm7%zDh6mTwPF@{<$8(P^Qf=%@-cK zKfdpY4O9P2z30?wmAD}_**4FYPG0Jdbeg~q9Q(71odr3`JFp3*FRp4fn%BMye=BD2 z()$#;3=Vw+S`fjit+dF@QL?f0E=DG0f58HElDRw8$hrMQAJ2DOOu4xADqx<#&y z|9GyYhYfrc&okuvLa>`HlKyrOLO9eR+!Nf1KGwq~7=JYWT3s^vzWP!_CUd@Zdpp|{ zkc3=8jwt7yxQS%PYQe-}XXM4l^&nF2LY)ZW2%?S8$znEK3h(pjZGunpxG$zTDcYq@ zU4WuA90m&|lOzdFPKONL10wA29;X}(4E`ZTuJuE!SK4Bo$GBb1y$f;!si{+ zk>)!VTIWZ`kYAAdgzw2kE%cfY_rj2##^wm9tIpoSt7fML>8{#F-j`Raee zeKTkS0zj3Vt)b{h*)V5@fuVQ#BE&E25N~Ev74m3h<_Pt>xuAyehzcTOl_1kXBg-!W zn-z+NIEJc;xBtMz4#mZt`0G>dryIlV{H_$|WwryT9^$ z@=*QbK2)m|cw%HZGmD9_1QSiI^dT2SBrvChko#}T_y&ymZU^HWiiVQIhf>>HUXF#d zI5-=?`eA9)Lb?S#9}I~qi%Y9sqx zB!9uM3Hi8Bf!Gzwsc#j*Vka)j6Ycx)`?&>9(bck?yWz8k`Gzd2KQ6T>^BdKGhe>Kl zTgUb8^PQV6@-Lct97gXuL=BTmpLhqe%yy4=3ijVd9dFnTF&0 zzJYfOV>4A~`4>FIduYDSIrc0&aXp#_Oi0LJ=PROfDkZfv9HLe7M)Z1v$BV;Ku)ovs zE0x#X6#QI-J_E~#;9fsZ9pEzu`m46Ma3`o@gT;h$r#VYdRiGC9)MgBwkPbUKi57(| zLif@suGfW)6@_mHL$s$rR+2y^b5wq+*1|BH3`7W zf^m5njb!cZ^uoT0r`1S$(VAcrjK@mZK;QbUv={Ymd48>KR~s)4Bbb!?^A||aY&xDY zkQPuN%yr|nO7N=G6@dybo=%?pBc0hE`T%9C=f0pXGl(^ng(1C<32&0(my}5)3qmK% zK>{UG?^|SPlwT7|J@;b`5b=5v*FXN(3^6KgFO3+#;EUe=4;1tm(02i5p<$GzVC+o5 zs>#^B5yPLhXp!CLJ`+M5aXx1q<|uA|h2ZO~TsLHw_{xg@s?pH&B zynlXPbk{KAEQ8$*G(qyXYj6g8Z0UTWCw!1xA(?+p@ppAr>U9aOPiC=05m?zDCoEf3 zT_g6y4qgkl{n(E>1WKAtTi^EGzAcY^pt%|5ktnR7oL+|N;)%LvlSPB**fhPcqrnWH zFus{sm>)&*^|%<5byorZm=+*zN0Isd`B(EX5pY=9$N^Irk(Y24-vj)#DCpb zN&&SWm<<`nKM^6xn8*kT+-}o}jygoWW#Pb@kYVqG)nPtce^_4MhgD}F zXBow!Yt~;3nSsb^6k%W<#g>H-Be`f{!N02ufrH%A#J@EzLzY*)n^v9U6$!(R+@es) zXVp53Az$Vb1Amm6#v|jOq(&gLG8(H>H|WNMZwGWKqPH03JpX*ip6>~SmJCw!YCn(} z1%O&R2HAoq!4Pu0of#7J2(#uo4H*7iVvE=fy_~APWK45&!R}Th|9(D&FU_*M*~`l9 z00OnV@cUayhRT`0ljn`@tB)=YQ6@aAtS&ag6yAA13Q*e<1fRMPjCULS`xGN{1OoAX zpPn$baKQTWg>w`vK^rBzg~2cO${e|bZOaM;ZQw3`N1#lK@Gv>H8HBhhRS!H3$KfXG z@0;K;5*7NVN{Cfo7Z<2H_e3v5Ku!+EWa8Fl0+qV;&jWKsT`Wb+Tmi;d@Uk|9Q^~|W zFmSk1oBlh7d3HT3Gi6-g?GHd%{Ca4rGpLP$7?6t<3!N9?k#9uww}76G#;b;B+v4H8 z`c(R68zva9r)U*nsx32EO%(H_M^&{9mLYOQxx^>9l0uGRbLK%_tNwA3d2Zo8#*)UH zwmdFMwj1~_A$i5|Bb}}D_DW7UROFyCkW<^18U!=hht}Wmr8+dLI`M-NdP+jJar>~! zHozg%Q0ST0Fpl-{!)i!=v#N0X$%ln(NwLJ@1=o(B{*90T-^%hWYxN@jyKkue16-#{ zmfg$dQ}*y=vue@b2FYKYT;T%le_x)>J-xSHS49zrA;a^y&6L^*{#6It)qq-UR2^L+ zi6{=5YR6N6n({`Xo<1)-rOpboJRKYbb^zyv7jg)XJfbzeYgn7$T=eU@CXl*5Bb~9* zH+gz&*bOUB!irY3Viu2tuT(0QNWC+S^ZQ3fc5S=Yba8-sQw*tzxB$+1Z+)XbrJ3%9>#$YP1RM-Uzw4D?jiv zL+TT3gDNyfkgaONA1b(8vR+cl3W2En3G7_158*48v&*!QMIJ0MT6e8nf5Z?r92$A# ztsL)_ihrt=+y#iL;TibNR~0@_Me6EEkN#zj71Jl`XO^PCNghPa6axYkSKnYY>;e!< zw(d)SmO>ccwT>7`))oRV!Ewv?K8&XV8HyE^`RaX@>qGZrM;b*}0lCs^EYc`Pqzf(g2r1yY_M`)0GCZ^6E9-MegE%x5$ZfA`2XS z@e0@;^E!75A66xi1-&?LTEyV$A>Zm$X303sA&K95OL` zrxyoNsBhnbFq5*CA@PCEPR@q^t))Wb{J%!|=BsPj;)$Yv+3&FPVOv#|^t4RT=0#L2 z6|(45(A*@)EY30_g3tQLCMbNVQ5BFSc!;n2z>wZR@*IB1DnSDc-m#v@)0@j4cR1`d z#Y0^Wy$+d8C%q1>Do9X)@WR26o~Kj?7YL<0HB;gZ=L0+@eGMr0gCx6Dh*Vo4=ZbRJ z4>?kzaM+TS0Rh3;(UPR~21l<3(V9!}YgMj&ID|LR<^ew8O!6cq5Z&VC%P6Ka2^O&7 zocB53Z7j+L)uGj^Aq`sMIfRzG)1ko)2v7%nNm=L&*8+MAS%g#=? zUNEuB-HO<8?fxm*>a6{fdZf?A))KGo?-2Jjli>l*sf1?Q%7{!o3}FKlyRCC-#{5K8 z^GTECxC>n6HpOurP$F$EB4G?YFk=Ogz=1K@UE#YpNAsBGMDpBs@t*kYDBDExbcZNt zjT`A3+Gk34#LiEd4td?2J>`uzCU>r9!y9yR27wPe+INV}N`)J4ze^ycUiZlHp80Z_ za1KeXkz6lvQhaZ3uVxp4_cwPz7HXzmT-%>gHEw5tOC&N&K#!*1m-hIg=upORKSop~ zEy~L)eohQ7x1y5bNLW+hf-il%aIBEsVeA?SNtf<>gETBSrKL{hQL zchHMMn+&QJ0F-4i2Y;Yc#7^!mbC z@9$=N>K`mt&#clE)F8yqn-bmBwPhB71ieG*XE!EJA}j!#$ud6`rjxI9Nn@Mt%bMzdC^Eiu)kQ3W09ddqtniw0^Fa5S11HicqwU%Q#?Zgm1$qInIVtq!13qoQG%%WL)^v3RDw05yAUXwUkuQ~ zz{s6My3S%2>DL~L$WOF7X$tO=!A}&$9EsWDWioqG&MP&Ci8}6$usZ7_WPcfPkKBxs zj_5c<3aK?~)T0FDtvr;@7EXU2|Mc5nNGL=T0PYTGe!f_;1C2{-S1dGC9e4FN2?yuQ zD_u6F7|JgaR`_k$hRPqhPLM~fH?=L*5nSud*K0I|9UPaAS+Q(C59@nXOMknY)~~Q+ z0Vd_WW#nS{4R|<&8AZCFW8UCydmfKE|8`89b1h*x{#r+fdMHK{q#?%-pnAruVi33{ z2YOKQ2wnQalT#k?_8d>2gOqmCeRhGzrptB&{H@&Ea)5lS-0O3on2KY_zf_Z=7)Tg) zMV|a|U#_lnAvVq+l4i?J`soBu7r_sVVVPJcKLk1 zoeooRa2C7%Awo{-2X~XT2eYb9JRQ@%Q+ioz+U}7Ml*ZOy7hY|1ogIog%&Id>QozYO zo00$@L5Fn!I|mL_0Qd#z7I!W3q11?s*z@_p1vC`MHD*D3cF!a!A6@2WixL@6oO#l3+slX{MU3?Pq*srt2ImLXwcOiGlRC;d+w_Z)|!o+D~f z^~k=VGz%>GgfgdUX_5`5yY^{@EPYI9p-jI;(={X?zyn+xpMZAQu$S#EGw4p54A;`6-l=dS1){Bc=4p+t3p2&6Gf9L0)JBOh^yv>3MCx8whVgUdip8y*;!@ z2-msiZqc*&nl67Nz7=gBNZ^g?=%tHVc3dn$%HXJkvF{+_b90-!)YA90tZ(^awDRj^ zztlu^Cu)5h3iR~CeE%e&YS`P==IScGz$IvLe#_RRZxavb_O4KHH!5bVyo2xK|*Kcm!+Xh^329*;gmLry~cb3U91`SZWeA(9}C|8pd3lLE>3U*}0S z#NfD%ohgtr|KRLHc!f9?zG?=Of2O`I8UKT`Z=B44y!vPLfVa=yNBye?F+=``y>XNU ziTZ!D>GyvTlhVZgHFI53ob}OOM;1cG)gYu)WSPi|P@=KH9W=mvAhrfAtD#Lyqxfux zauP=E_?ZENglczjxazn~3E(b5k!K{7eIZlyE>G(C@eBy)vwssIN5v1mvZKiRF4-4@ zmF`0m4P*_Gh8t+1>`@S*sfZiG%C#gfE)39i$fIQ`QKj_=-Kuvx94iX%e#Te3WkACL zUvnn&k|S1~2N>s5De{Cg-j_v0n#Ez1?rd z+;0b^9VGJDR4g!w?(rg?y*@e!EAuxCKiHLpf&5$qc5H1~^$dgcuH&h{pQS~$sBohu z226|gcK)7mwzI+uoyN(W3Yp6719G2j?ym1w^~+S)4M}PNOshxCn^*9)mXAd+E``R} z;W(;;S2$IfDOlUsX}wK_3U<3)etiIA2p48*?ZWSxOC2luR285S=JKM%WX}j@;lU&U zK#3SmHKm&oFx(h5mVREDJ9wVJZyZfa;?@M)yEA>mb8fDHZ*X^6=czhjF5DRu_1SO*!2Ohh^`EO^aVh6e-46ccbY^|yQ{jaIk-{Uy z%RyU+;4|QvA|kTxG8G(PUp;F~UlRUzOtg{{C?i48Eavao(E>#@sP#3mMx@=V=Yc9xh=o9wU zLcBp;m8by@oG7z2r!a`791{SCb(rFtf+r#Q=LIWAJ5wi6OL~d}MPe#PU}8XgYm2Jt zkMkq(6HTX*p03d9?JOJ^w5EkdRN{J&01gTX5n&G6zlAsZFWri??Y%YL*V*BYO=T)- zgy+95oqO8ljR--99p?ZPYOE4jjL+U_GN;+^5^x`q5LDnOkA_tqJ+l2F+1xHp+R6z%hSm16jJQ)JTuBV}{_-fyNC2QkW1SpZ(d^|UgglyGu>n=qTRykz@K zXI>RYD@wS=`y=*=v<~q~sS(A_$%Zw5SUoE@W2ElPNc4`z8%{jqKOh#`x$z4P-vxUK zP|I$*_XUlo^xrJhfy%Rh(T-lk(LXJwjJ;7}@U34l%DC6zV!eVd(rmOw_)_}@LDK@Q zYm1HMJ<>y8G!i1Ei4;+jVUR`NlHJ)7Q7}Hw^!b;!*z#nAG9*ZI|F{U{(#8)QJa$ z4>WQxHnuS`aCEY@HgGaG`nTcPzYpajl>b4IFRIC`fX22oIQ-mdlAUF{7WP4hVOyuI zvX^4q8!8Zt0hP4gp}V;xC)Y}BH&^6aiai+HPC2#IPlfwQAh>_?!8j5@?-SkTkN^}E z57EiuFcEL`Yz>@WGiC&7OyK&UWDSb_ilF97jbVCU>ThxD}%&mA0U*5J*6q zsbG`@|ELo&GO9bC-#kd)r}WZ>?5nkv`H3J4%c+O59I3pir)x|byDVzTa{13 zI^3(|XV?ap;c={}E6iQjS#5cA?gT=E#}Rux#&EH%%F0!4!hLMpR03sQKYyQmI(~}d zvU}+bvg`5AKfchVF9l;nWfgeGH1&=m?mcgtwzVYM+sZ0j2@-SQ5+Vi#pBXd_Mj=7= z8g%gMpMh}lZ;U=JeN>%(_bLj2J80Y0lrq}!J?l@i;O2uUY@&*4pp)YW?FK%uOI6}@ zn{%8Ib>GWKSUYoSb%}Ej{awF!n{-sgK>G8C3k6bqbA`v$mU6i*y<_=d>j;fpin0!t zZ_Y368O|TH%E`dBi#?st7lEswNC-?Q1Q))?8@AEZh-$H=XvZ!Z6l+1TADIl0>lJL8 z;rTcBpz&ij8H`DSyt}{%H4Mmn>C13XvXBA^(oJqS^pVzYWn>Nn8u#K7Ii$sSJo-vH#e0D7~zm z=BKWM6GV9mql3m(i){^U_LlTW_4j`Kspm&m?TcQv1+T09w&=jiSf0 zodYUlMYO*h^iyAzlijY9I|`=iQMoKk5NwzhH$~{A6FDcgZdqHk{QwoeLVoEH&2b(+B-TAW_w;TkR;w*T$ovbTl$en>q+vyFJsf{QpQhe#%7R~yQ#;MaX-!H3ibGJi=6Pgu4hP6g5Lv( zHDtpx>%MB{@$Fue*oYzn4zQkdW@E1CCQ#kNO53Jm^0o1I^Pm!cs9=86tA{|)K5%8o zAsbCht8_t2Ho6Jx#zpU_F^s3iZ-_8m0eL#T?t6frqkkEue;5t`LgxGIRhc?StxRtH z#J{_bky+Iruj!xuJzUtdMKXD?Xik;2-Egw)Oc^(KvycP2$@Q|lW|=zGg`6g-Evj{W z9JIgC5gCme8u^{vr0z(W-~5ednGYaYPq#6XU><}1z%5ec$k(7wdgfoKawGIckm$($ zA=w2)$6nIh7!Ezec}EpY9B}pa6RiRd22HeVn27KImih*h3GqpU{LU#iaX=OS4Zh@f zIxG%yZ4M1PVy$%>0HHL4@r%=e)=m)HWR-Qo?#Oo7D-cVB@CfVeWymcC?OWFy&xmA% zZXv9I0!o}817$J@s2Jv6hDP*oFb<26I3EkpcW|0T!idDV>?I+ys$7t+*o7iz+tfH({#PBa2;f$>S zYv@%2#$SD^3zIe**x!baR7ny}W+a$0=aftFp+X%tb*rq}nJqy*>shSbR`^)UlEsCA z{$4HaEG(KqCqD&?7_CAIv!_?H#mElwpsO2TF|;lmZgE`MG>)zU2I5TD68}!fuj&l+ zFo5w2n~08gKmrWom?{4%wBsp45C0J+J7j_B=1a!BF_GHxuW+B@eZ4Eylq^;ZrO^kF zZthw&&rj^RN?I+*@g+}^$91-MSc!-MQ zeRFS=wb8__ivpC<$!~G6A*|ZZl}uaWMbrwwk*2g0gVOfXdr}J%_ff|S9sJFgbc}fhRPu$rC`g;I3 zhdBdB7>0Vk7~@!E)ec;_i{d<8Oq}=Hi`KQXnGiOYk1IcH!?@Xr%wF#vXDxJ*HSB~| zqEz6`{6W@NS7IxzS4>y+>Xfo>vo&YE`;{^2)}flwAT79L$E{l)__90Wh3Acaej+W~_)kxm^gs;v1o>JYwC+-V$Ib5}rch%?oZ$A@pVj z0*QUY7EQLU?SOH`6-5A05`uTqa;LaI{QA1L^6=PiJ)217^aV@~`h^ge5B@~jPgmO0 z>+Q<+?z(r9v6-g!%m@p$Nogvf%m-GFBUR+~`g)2$wA+iLYewd3I|u{^zjb#yhTFEP zxl+XVv(fWTp=FkUV zYu~Gw-l%}yPBdd`55hTRB%-=%tw_%`Ybnr!sz|ZaFNdOP!J!7oS%#SLJb!_<*o&&P zZ^jA#D&PL6yUz}|^0Tw+H_?HkJ56!*Buej4nx58tI~MI`jnVr-3%cYR)yd(X4;f7T zcUh^w?{M^@`9p6LD^BVfFnq$=66_K`b7tu!AzEwq$lx|xV1)t;L2uSTUTUGN73su& zqxZXY%ae%cy&b>2p&BxS;`J9|VRLznN{u=*%V&>ZOx5-S5#6dy4`TV2Yk%7}0*0Zh zcZ5;%@drc{N;DLxxA}|v)_Zll4<{-9YNFUQ=L+gnQX4n??7x_!7rj(Xg;%k!C>-ig z+)dru`>s`6*!jb93FrU^v5BYqujum%Po&`?_Iy}4&y4=+YYqd4jEz1Js@rRN}pkA5o#@a z^+Y~G_ia5E+*YvxQ-bz~cnumE4k`2v+SO3qwlXsI^&_5PqOP8HHqDj1WN%V(yYVs) z+KBQ^2>GP?2rOfm7#|uaFbdBYZJ2%1#yUHbfcjt4HirG z68`|>nC?#P3NyAz&%!plgwFYI>t{Nj+NpL_`|mfRW4g}TX62Ii*eWZ@xl-Kz{M94Q zzf|`~cf`D`thy^{ok*F#Vj4-G9`g9e(CRmAJ0u!e3)|Ennn#+RzS@edp$0FwQ`w3fz^0?6wB+?fZK{Eueyul+Ub#>o;$LNLT-Un;S#>oE}G zFLi|xCCT6o5Hil##w^8>KDr71`~aT1P9L!@m$Hgg|1H=xX$cruwFIv^;t>tcJ0pv zi&~n)o0AtxR#610i1qdE;{gb#FR<*$o(|j2wYamSIz#&CpO+Ks5B^Qw#cX`}o_!P8mTMBYw zABeXdHs@j*op8Gfjn&)zjN9f4Xew5CQqqWa`=eHI&GAK&6|&Kl z?Xb4|{&epeM&{JU*0nCA%%3B=$^kQG@qSr(T3)i`(hP0gUVkbJ!CSpC|8l?7#OfjnGKg6bkvt9)@`F zniF|>YS&}JbhwUIn;u!&RNe?oW)bI1qhYK#Rv=f5c2|q`3@=`-7Ef|{YJj@>UcXD-D zDWvg^HS9I@0IlA9l7?fGX$QlimNV0nTED0XOrHTkHTsWeZ8S(BG3M)GO?}}?Ajs-X z$&`hmR|U=-jsz3hn?R%-iDI@J5=H;xNk*SpDS?F_PCO+%gd7p}?_Qbdd(&O7!ist3 zmZRlzvR7?ChuEV;Zeo$82FyS$Q1rU$(@!jiRU;k{LGx(3O~|OT)fYj&)jgxc>~gxP z#HMdnMMshl$05?rb&^3tS#=jWcVkL77eqzk2+ZdMODe|~v;(t7K_RMWHaW!&z2Q!V ztFsRG?y#p|QAenE*v{&&#MZqqul_Q_ZQ^+%S|Pom0u|?LJx+Ux{rvTzsOq={-_3On z%_+H+jHQ0Sj-0Q9-*7-R@+VP4g9k=geH>v|)1L)Xgg8{Mv)pH?DDUzL`+V?Eb%Y(h zBY3{MRhg=(zA~mg95i~9R8O~z_N#F{4ZJ8YFkp$h-u=6~DGQBP2jNQ$iT+2=w!!^B zTuez{Ij(p>6(Kp|@fP#b77K{$8p$|{0R1b7p#6cQ`B)>URSh_^PXcaR*%m+b4zh=J z-pO^x2l82J@ql0XbU%^(+;pj|6@R#wU?X?anNiCivqB=AFUH~~6G90dpu{TgH^*8( zC5+AW4_KsX=Hnq<0u)wT0ze$(+r_2m!1ZGNEWoaTg#JN9rFl^f3D#6KroGYA(^A*H+d<1Zfv-(&x&tVv0@&xo zofO*wo!k@|tEro62F?%1Ovs zw>aQsKc22FRM8$0IO)oi=PSg=3~aUUBGSSFTLdym-fm*y1Y~>#0UF?VHfNkJ=e7oi z{x7WikS>Ta99KokPdmd?EVW?a)3x+bOV$|Cn)+dQIzkNP^q(@vYbyI%=oS*p^f(xX z5{1{CNuuU4?;2f(bvxm{_#~2!jj)~GMC%;OYIOLc#5in9!y1^`)cR2_+J%OJ zgD<>!m3ixqSZIykjwuB>s1BL*gm6e{vf!OUHmS`8SFR&y2FOFr6`?Z$qX|4q;a_o^ zOa9^9c0ryk^CKUxRPgndLBf@kPdaGb`#S9rUTa3UNkW4)HO<73MJ~Zgy#!V+T75HT zJ^AAUwS<-j7yjFwJodJbe7>_#NL0MvExsZ+0@Srzh=f0nmQ_+1$oJ*H+*Jeb#vc_H z!Kd&xdsBd=eor;o$~4@yPw9&c;CeCk%1QHDhTmsqczM;tn)ipXi|VD0mf8rh7mb>2 z8{|K=%m0)veq`ypU|%?*0N8)%Sq}~Wi=LGY3x)=C++john5ewc=3mP6fdTIsB{QgK z{*{`t_Oo5v(^|L$B{AIDRI7pv$|2+9v4YIXO31A6#pl=gMQy9*IcbNZkeqr$I#=Ky zu3c3!w-aJ?j1pvYlHhz!tdSqgkRIsdGK#)v%NEw)ehp=^$TzI}8s>I!qHh-E;D{Jl zcnIadSR<7ZH#(@Gb>YCTwRZtd%-DuUXz=&iEI_@MH;gJ(;t)k*wOAgqI#Z_kx+;xK zRs6*7aENx((=?h&lobA-K}SiAjqI0GlSH-|j^a(#faY}BRvlY5opRONuD_B9#LFHP zaZ|5~i+|l~TUo^D2_w1D)}9|4ZeMp}E;YM=@@kKNFF?+^y-u#x>SuZb+t!MWw0(0? zH?qXniGc4nvqz0ejq7!i!wRc1N6B(Qzj!YG%0Rx`+lGk$LXQ-qY~QfQmXmWC$Nm)# z4Tpivo?B&@Bly_L3hPu(x6Vp*7DruxTCxwJ$RIclekv5QCH&^4N`Ii8SJe)&Q4)-4gm|`+FJPrzb(IMA;J;KaMx)UIGAl zCQYQhd)ST%)_jRFSF(~Q6A=@ApoyLEqY{9BWm(5|9}-*WfB%FpT;+3WzIUD62q~Qje}R%RQjMZxLBZvmI^__Y zYbc^LN3AC)nki7Zmw4U@vr)#)QxB}3hH2onnx{FZ6r&Ok_X%W!PqZU-l>b}5SrY$U z4DGw1@u5eaa({Z3go0ziqQ?e|PE@)y#DM1ztq)SF`ORHfl(l}BIfE4&50+OQuoi07 z+JA!)j**0_AX#C%If+M!Rf*s}U8(WBiDMECGquHekzlJ*u1|EOc*kt7JtqvG;YXhV zQp}Y~qMgi?*p_dji*o>j<=ctfrgij|ef2}+K2_NcZ7=uKJcBWc zDhFq05LPDJuhlh+dueN=6>yiy>AyWl+t9<rbfvsYtjxb82X=yCM3y_`}o_j}8 z0v=3}{Yp6Udz2qO6aI)~2mys;Z(y`UXr#$Y#i=K0pz-7bo)%9Z#ba-F05S|CQ79Fv zU(6Ve;t@xkalqbr2%~Ot75Y|mj9;Eq>@TilraCF!wlxLj%sI_6^D+iqEnVgf?dBj% z1*%bp;9H-0%a#f=hPkv`6AlH=-Z}?t_PSA%iu(nC7~~rMiOV4*l-m4>i4)a&av7pdr7NUM}MujAGXijCndE>VIpbU0bo1xuN&2&mLm>Ik? z1O=|%hO`Dk*?mb6p2KJ;8xOo))NGU=$iR`+B48X>hq*l;<+io83e=o}aYFg|$R6T~ z!Bz(9miBNLO)S1rpuy7$+;`VNEi^pQt{&(2fLy<_d_oWU0pw) z&s#q}{`v>=r+YmN&bE4*T|M2#{U!XmMJKifU0*vtn3rB(_tI>m5FcKM-o0+RFSceo zBRe^;y`J{3-+Mp&#W_2c6Awmi6P5wbK&fiCW{+Y(=mDTQoH+8)jx=JH9E#{dPdI>cekA;gfY%;#I40XqsQ*%UIbn;HFqiFk-vp$F*xt`UmGiwul7 zIw4@#roVQun;D4R&5t1E5`JldfBzdKs6~%@V1%z*jR3Ca+RVymM3#Bs#4eA$M0g}Q!CCDk2nRV7H|pdVr&aV$IsVO&fJ)>Gz| zi60REV|xCVxbr9>spIz5TkJsnvjt<(^?%=j`K@B`MIJzYuh8p;Jf#|}S#!38bh8i7 z8TR?6Q9Zu=K;i6x{VS@&Amys)Vej5`nn3$aQ(;MQZ?V5BeO{>>yO{>A#y`GrUA1Qn7ZeH_u<+@bX{@(Rmex%8IuomrK z0Bs8%i|*<@Zjt)Yk3y73>TSdu0PQA`y#Cc|*1_^s2_xMCcvZv%j@rY5-DFx0&G<|4 zFxZSK2yfTWOT>X<jR?&t(O`we8Or1ozL2 zU?RmYZ?r&xK*u1irD)H@4=LkM3_$ts*E>VNGl#-GV$vH9nTFNy;FukSBJ*#lh!KL~ zmSdJC?JL=}(9e9`j=B3WV#-hu3e+Mz$~xkk5Piio$Q$`=%&3mv#PrG1Y8VtYKMyb zVq>KiMG;^nNiLMi{Q4nSOIJ_C5*?$RGQpU=cYaDDN|nQ;HZ<^9&{uM{JEHstXHi6Z z_Iaa*YL?Q@b2oS1&$`=fnz|wn(g_>;h<(cp!ucKgu z#=6oteVR-DopVBt=>wxO`+^g%i$A(+eYO}$}4fW-DzurqQ2pJhido`8yJFS3}ntZc^U%_KK^$VK{)}zF+c@yi+ z<7A;`17kHh%ilGq%w*tBK%jMwUyX-=ADS(_)4x zw%0(Z=|-SfSZbTY)^4$Dv5I*DQ<>k~3Wg_&2(f%|Su!>lUyZ~Y4tJSq$=xrS5~nMD zwuA`Ii&H0pFzhee#ZzlM12@@nxzrGl=u_*v_j^Ym%72Hb5jpFszHMaUXY%t#XPyzg zy&aJ;VOBo9U7fwb6Y5=Qy|sxdFm0!X7DShytJb!+6C?uBb+^TRQqWz1AwH_#@Hny& zc5?>=^`1Rew47*_5~i>)pZz6GTH!Yj?O{*qm_x3HvImde>c2cUWad5SM?b5Vpip0 z`1HJMy?(#KXn0q@IXpiC_fPj-M{T#a^^){9Kae^2BOgHGKYhw>HJ4_)UJok_TD?KtV!wv&!++qP|Y-1%bLw$o9^wr$(C^=F^G_rK3MW1Nes zi>gsI>gug`tu^N}&+eNnngDYrEX;{2@Hhh(PG#}yPClLvHS`zK6eZ$HvRr(L@N!e# zPnp@i6`Y)$N$`(3?auXI`>0ZKIhRXXXR-TM!M|j=TYP1E%sMPG<` zR;~KjS3J3P!ik)6gA@26alwECYj*T$Q!h6E%pA8*n^C@Z4#~nZ(gISZSH>HwQiTTD z`+d7diV=yRz?X|q#9St(b#AY{h8&yb&YvJZYX6{byH6Vh917rZCbVF^OEykocTsDov0S^s^ zIXbvn0)FX3sIIP-&IPznk|*dKWrG?5IbMQL2Rd*=?C4>9y)2eDIT4LF0E>}EBTX-! z0%9=jo7Q>}BCmR(RhhDdXV5UiqJKReA{i3!ZMb@^TVvF^mM|xKspQ?}N-o${OwFSw zESQz>Tf_`quwW!bLH+ad-cHsXS*+sg(gtyFtBTJIs@wo}!!s*0jGU=ftwNJDx-+RA z@Q3n$u$0vzUIf^~$&xt7Ld0ow~b8OYw!p zxo&#uhsHdsAQ1alAt&tWC~wawv-IjVuvT#< zWhRU7gUkTRN+dC~&ZN!zcw<>rL;X`_ma`|0KV**6g-cwfX)&(h(h(sy!oFS^y@mWc&C~gggca@ol>NhAw#~qbzDb8G~FnR2gjN6<^8zF_H`&$#ABOGk6h;! zdv4snJoYoK$of#1+ML`5;`gw%fQWQ+e(G#Un$QKD`CFH|Qya)E zysZJ8Izl|Qq4ouP4{J=k6P)iol9PcFRa{c5)WUv*R>zlFAFJkDzzd1=nhT$c!6r_R zxHG!4t$oME$DVCUz=3F2N-yh8V`a!L|AN?C7R_%N2kPR%vEy@K3$sb1W8T;)cE9mP zv1ygWZsX7sKy)_YGA3rzkR)d3{!6V`Cj9`|nJT^PH_NL5tZRsxh2vl}0r@{%Xk!o( z)EWB1F+?pz3hG)2D2pVnNsN>w+xnV}mNcio`x7BSjw;Dq@jmj(r$2+qIRt&%!)_@b zQ&G03fM({NILr&lD8?ULce|?#RXf&0R}$^rdMTZn1kdCy-D_>sps^|~M7L54 zyjKaj!(xaD%$P8$S;3J-L&ASUPUpNi`y5(1krX3=hpxXp`k~c#oc96Ehi|Hd#P{-1&tScdWJ!mAb00T9civn z-zmZTMF66{0i?%7dF;_J5iEZ$z2pFniN8X6M2Z(o)GPG~2Uj)g+!bXcmJcxI*=l)w z$+$*a(k6&7I@fFJ#RGx-`vU-x=7%Ucw1^h-TbnQ-kqqq;NUqbFJ-Co>I-)6}N3CZs zFC6w@`9V7pvsU9(Yp_j5WL-wCH{xUCx$K|4F|(&Ri1rX+!mOr{MFxvZT>TdK@2=E8 z+OB>wq!NmRB2a|W2MMo%{8eXNs|`fkPHR9iZ**+F*JPM zD={^sajlPMX7f7uod3iR_Cq*I-y!eXSeKnv6>|fEB7U|CUE(L|y4&0hr*8-mf%4j> zE!!8kV+z_GK(j9C-z6sgygg$mia%u;&`f#P3}K7Q69$I3*_f1a#0MGFrPmfX$xKN~ z=QeyPIncKUw0TEm_~-*XGJKo5G&={C>kcrQ&z|Ug+#gSFan>pK-vaf!oqq3+mty@n zM7c)s#)}byHiOn^%*gRoW$ZSF>E)&(CDv@7IqAm&+05bL=HurY+?$F)`izmEdWwnp zc~cV^(pokgAL0Y9ScJhCJR?%hGW_x4)=HCX7P4e{F~cX|koFURwEs}s1|qwuCU{PV zcOsS{-eXE04POJqB-wz zy_@Y$i3h(PF~57_HQs;2P{07>uYmTh(&vi16}p#^s%squ`FZ!+kmn_W&x$t#O2{O< zr69PUh*uq-e*qOPKQ+1g0e-*MY{^54p+idvLc&$U(H{#?KBd#B#}?ooxcd}`b0WA* zVL@rrQfF1pYo&vJ2<9m&9=V6O#9?un@Fr5BE6}4HkF&K6j?nELbO?Tby%}X>%Auja(I{0vr zon1fAFl!Hh=MBK!kwXoX9Ke1QjPpW5P}{c&z_1Pt?pjg~wrW-yremm<&V;EnPi@y~ z=h#mzzzzFF%6u((cpGAjh3lMbz*DiAq}}|%<3HjQzNH|^byK7)(~I=*l_>HYDm%RJ zp*!oPFidg%fDp>U5643>>tu?D$Na*|5LoK&G> z6HMjR{x+zY8~wOg5P4D>W270iaVJGN*A1;i9^SWy^?|#*v-+99U3AR7q_2KIx zV+QYN+v=SJ`I6B&Y>&ByjdO^iGIUdttT0w)V_o?{_|A-s!&o zS!H{SO!6A+eH$3FRvvzDy=d=4rb9h9Ww47CVyuF>n=t^XBd%4~^BAkgyIRYdc0D1RAUpxc z5%7*DW_vFjxrh<4({~7YySM<*ePJ21fpm51`GnbfcHHVgw0%^IpQ*VOPqm1nPRXp3 z4xj-ghxlB@GOFf3z*^JxPo4(EU%6F}bBEA${O)M+1sVaV#?=Hb@=*d@AEb z2LGhH8un;|{sNbX0E@g4PntM|Hs}WQi_wkp6Val~1}Ej$4e(aCcFmk@>~rqN=Fg^@ zxNdm$OmN3abxy01rCmJ!8Qtf(Hiho^Vnl!2xc%}evZK^x)b6^hR`L59iBu??FFDtm zAs>cp=>gAH+cfn{Lco{}$*B5Wr_2zu{KJBv>lub4I(4oGwXlbx8TU$QexCtQbSJbO z94Dl?6Av3wn51{&(Hcwq>^P9lxr<1D#XnWj4XXIl0fj9(B$verxOwtrM58j<`)=_m z^2xz_MuSE*=sx&BLk84Y5P4g(JgrehOjwgzT11P%s>}0*GNQsYDvbc%oE%%?CVZu~ zK=$2aliA+{I0*>tx;e)jbUPK`dWJv*+D%GrLHrHWL|4%DxP%u&&aj)8dsg(B>Ce6B z0hMuXcm%4n38s@Y-412NghG;R`rQ527T&qV3!vhe0@H(z)n4C{$-F8O%W@`cO?GZ^$0iuD+sC zCcXi1#dNqPC;;l48k23XTn&>NcJ@gp?P#~#BzT{VrPa@wSxRJ_GUB4bzt<25ht5=L z&(?9nY735;93)x=F-$)5REpgeQ)J9fRy5VQPpoV;CII9WQ;pTq@S1Q34eYk)V0-zYm3$KAM+n1rHFdUkxA zFmrJ6&H;FXkjkq;4yE|TJZwNZAxaUYtdHScQezGYj1?RQ%sjMv;?KytKL{?a&@@sU znu~IY((Ysl8G3pfC1kV?l?B~Z;RXiv)58PpDR!2O9)-of+LQt8G}4IIaVE*8$q1ch znoJ@JOTieA>CU61hp1Ne14NTyVao11+8t_e_y7UpUzpnPM&e!;B@K(a=r&rhSk{%w zEr@BPsO%tTrpvt`CE&MUp~zNZDw(gWkDO=0Ki_~s4u4oqUn$i%R{MlIOt8In7fsmWNjN$Ay+xUX3DS4D<_yY%Rxn(4kmZr@=SGU zKmbZ~P>a%z1*Zx;sF%|+oTSnm*n^zolL#NKx|$K}1I&#Cog%=W>~dtXmlkcHhJHZn zQCtSrMV{*6tX8nGTox@%){BAZKbO$zG6Q@=mO9U(tjlI!o}4lP@4uanWh=v=rD#OW2(qf z_dBGviRA~W#27C9mY^J9U4HTbrB_hCTJgU1$6#y}LL45>t{I5WA9mN_T-S~6o`u>S z7Pp17c#8b2D|kIO-&(u?ud2ef)ku7>Heu9#YjE1QqDN}F>g6V*RHf0JW5iX7I01~? z2GlWwxK_Elun(@KM=tEv2=gyvN4(7vJIokVE(=u%zDq$*IZ13~z3mWkEQm=ma&JK? zdpPHpH~!62@qh<;GN*T^%J4*jy+9>5HJdy)(4ttJy#G=($)3ucXb5ln)mh5@o6D=E z>g;3Y!o?EHPW!{hcxnMzrxOfIXFpCfD17hrC5R=&X( zyaulQ(fOBZ?QN&=p2dR2ZR6tQUp}*c+srm`@?6-zRjTCh|K(0j-hzPrzlOb0YTD7? z*yWEW>QD%}qQN-k7!&dU4zW2IU#eTmbQXSm;cboiRID&miBS}GtlX^&_}1jhVwhue zPkK>an=y%dL*?C;YG;Cd-rfTtG9kU3xY=R^Imj|K&al1u`l3Te8If-pmLwGbeA_+q z#~AC_xWP6%3xNvLjL^3LtD!qcX5odRVx^aQBf_`Ie`Q&N7ZVm8i#hn4$a%ZVvm6UI z1p$`*+!s?#r`O;0@ft1@S}bi1!_12l6L3N=f7hVPJGPXf$k9+SHtd@$&B7LaDG!Xe z?ei=e9EvtlH@5EsRa!JrcN_ws!c%$O%IWe#DCciu_qHfw_7uycVlYvctDW8!jrKYrPQ?rD?C(hU)W;o4 zNFY#R$GO~IxK4|!hnGD8uxicm?`%@@sEa7Ac~Joi_DfwVY+9CcTD~b9LGgNGhz$y} z+RF;1ob{=s5|XGCr)p;5WH;gkCf8_vPm;26Fd*vO$oD}@P#v;9K2MKuf{yXjvcbXe zdFn`wd7bkGA;wH~ZtNQ2w1ri0|!6ah2{V=8LZEzxI6PbQYIt;m8e65o0^Mxm}8`RrAn*W z)8_NkV}Fm*wAL}Xt|WTaM*{`ZR=i25KoauO0?92^?G-QfR!}!bPD}OFfJfo5i8(%; zQ3Bg!>S&aY)y3V#HpIEMfH6EVBDPv<7h|ed;A}+a>>8OBG5OPe=DvZ{RY2N|LYR*7 z^+k)9Mt$r7EX2WbUL`QoZ%~cXVJDu-hB-d_ESVkqzO!l_T%vHf3)oWAQe(QcpJCie zc=+C?fR5y!a52-NWv{V=fa48?RG_=+)!ilhv!NF+$*ReWq_Xs zeSPwF;5%SS>|v$t2BrO3t%D2C=BPdQt>7LUbxo}*tPlFOh5RZ>XbGvu=l*0 zt^FZwr2Fw{NLNC)ZsHfHI*+W!@sl`?EH(* z$>u7~c9`WGNR(iH9z;zBi77LXrS9qLdJTZwE2s6YKI0HV6rzBZ~h%uTCF!^BKVFg zoC?#jzQpJQsyTQ@fLmxv_T(Q>^?q;L?h~;of583}S<^a0hGkp1p({4y(}jTdQg4EQ zwp==bct8jnS~d~!BqNiQZAZGt0635#V+hI`zTqmtn6a3RGk;%?%gHQ(m7829|Ly4M z$;jQ3YC9=!?!YKKhK2n~1R^ijB0&S;YN|$eIow$liEoM(;dbd?x3OXzgQnKogyKAm zLgK1s@cczuQK_5=}di@c&>imj9?T07w-!RY$t&Eh|5^01JM4$+{%lu zPV00f9_I|L$1SEeGDbu;50qecyDkCFIqb3vQHM|aWa4?3G6rLKcq}EeoTSpD?ZT;| z;t=WJx05w9K<7Yv%Agt-gP4S*NNY262_&e>SM?-iHF$#0Hi=}gD49`-p_(@RokJ*k zNIS4-7Jt|+^LIdbt4EmO7?6rJ(b7!ePybGy7W2f~#hcFjmo=8o+bwK3QjNfVhCp@{ zn_}TFPbX-7%Wv*>0X|NGXj0gEs#6Q(?eIy@+qOLF&EC}!N*s@#gaB?QpY>eKDf#xMV~nYI=_cl;E#9qa zOgO=d9HtxTGD3)V=pj)Y?bfvK;Tx-Yu;zwjrG4vT#p1KC9c64<{K)5-oK8@9JYpPU zO|c?Q3`K?0lp+(ukhb7VeCLa#3>{PpqMEJ_|V`fA9&Ev{|(fZ;;;{)0jP!p z=H=a(<1L|Q_R6X0hR36C<|C3kZ;U}$r_@25b4lO`OSMF{uZ1m0CG~@J8NcsH6`enV zgggleHI;uRgBN}$Pd#>R)(8|F+~INPt9x=3x!{OYf+p3R3ad?>ooG<*Hlfyf$79Z@fN15WEGp_M1~5Hk!-APi%jz-e`3I60bxjeBmkyC12J z_L*crh93L+Ir*(ATUq4$m%W}Ycg`#XjS=e2R?I=Jpr*tNM*Z=9s)U4WGk~AmCx`tx z@omF~`kf_?!^QC-mI5K*^S}y?Tm*NogTb*PM0<^mYHhd<5o^IXoFuCq0q)2vG7O08 z=fm2APV@eoHIZ=O+?~>x?NP#1p;h7QwFR-x6gmp@(_8f3SvnIiR8BWxvY@C(T=~i1 zy&7&<#tw{B*oeLhfxyC(nUSK!c9P;mtTaKSeh<8e@`v>DdfEK!0H3?~%y@~p`oZVl zcT0oMCip|re0(P^>3fkCfLl<~+bOGt^iu*1ixUkP4u#K^>lkvBqw(QdZhy_8&LA|?)=VFUEv~*YLp^wVWpueyaj7#*c*0uWqqWhK+wb|XR$m8 z>cH?vKsCPOe432D;M|deYt=!+1w%-LSJ7MRTufH`7(O+|rW2GTK;S}-Ok zDib-pKx*G_q-CKfCb)v1;TYxp2e%U*1TYzT8uM0(Nm+>U#L6Fx2!&bZ52+9i$ANq( zpr5y;@_KnUr-NaYVF7y3eep1c8nfgnAax@#7Fx5-u$Ub!q05y+YO=Tez{S8GMq7jz z%KV07P)3Ml0R2JI{1a@~w-D-{lJ_S0fsi*+s6AAHvV*bd+K{E&Urpc@^%o2^D@=CU zzP(vz({A}-QS*8V@P65x#`GMz1t>Xe|$RRIUo+1V9Q|9hH`@-i`WPl`5bgx$*y5#fSYjw=0?Awb@ z3fr*6^hAHGafI!rZyz@i^51l9AC7t7(mtTu?6_VENyySJy1u)@uGPaq7#L>eLsIl^7zC}aH`<1X-#y6Ym&a$EZxHU1;-UggSm-Yx9ON( zo}>T%Ja@+Y>v-pS_~HQ~dF=}B?ZeOdiFS$WuNaB-vT^W%l@nh`OKhA`TX*0({k^?r z0P~hD5|VE2y<~*NX!O;u$O}P zsLm3aKJ?h|FqC*g6c}`9FgW;dYe%$y@}!x7d&v}I)rnY}Q_G9Gf_{@qkwx(!2R)PI z|F(a_hcQAFYzP1JtPLLkNh^ysySzUk-npXPCGWI{2Jrrl!b7{IyV3A|^?$|nQ3M!Z zcBK?fok}xk%)DC?F8#R7)kJ~^X*Cc~l@aZwB*<3wsLFg3abznaey)`!iDLdEN}J@?!2d-I6xHVb9O7 zJ>;uiND~oR7c(x;#3K9oxz*nn!~*a)sMJ8kQe8R<8NO?LzpJ#9tpYFZ;!;YTh7~py z#m7+wJHU^6k9j^m@wVv{m)b;f^tO%qcc*u$#iP!Frhsf&69w2}wdOh{R66Y}D{KMv zbGYU*8?&hZ)gUd_x%0SEf68oWK5~LWcdcr!yQJl<5(j8TMAVGR#{u69N&j16%Nzkz(I)+at(nMm*>x**e2SYbsf!)*m&v5n8qu z+eBcz61z{+ejQ3co<^U$nF?T6^M^zr)zN)&-UiSsam)_0s~bsIC_=u@QQA!-Q1cS4 z_D?+aMXL*ce`>RLJ-;o4j@~L&6t#fT@O84b;XVA=r{JquA{bq^*bA3Y`BOV%pQuia>7^4d0-P6OBnP2EP}*cZ7{ovl zC>mjywO?r@C4S2I4A1xQ{tw?MaSf%;8BOhozF4DJ zt{wdrgTX2fTlSw3$iJ8 zofB+1Cl(Udnkf-brh5f$thSoI%%&%$KC!|j zH;NUoxJ(5w`2*D6dPVIeCzm(g@#}3gO8s<|5?%ZhPP4AJbX~QKbl87@fF9tfD;GO9 zsXbR!#%4uriJf5rnZ! zNbr|8ev5yi^B0fm=;9Pu^@rctPeE%E12h7u1S*NZVUoyZjQ8_yKVFW?BG5I5I{Xu< zTbR(fMPd_jtAn~#&rQfT=-5~6b?V?mq+%Ahwg;KzFhoQoYBSqL&Bv-e_{ehUa!2q4LtZ7wa?r-tYB``skb054Fpan|};^q1V`&G4L+zgPy$dTmM*#i*NMY z%;Z|_PsDyH?c_)O|eJO5W*!@{|&z*2wcpQk%{P zWM0r&IFbgdJd;E$OW91Im!Zlkp{mAcBjWM`N3Q6)=(_7Q5S&k^Qi~emM`sclvEA9FDL<|}(A9wZIux|a9?b)j z)@(FWSsjW`y3@*vNd-?TpubfVG%@H=*$XVm%9pVN6&EhMFKQKnp3FUBddH1EcsMpc z2D=sK)3oy(-Sk_;%sN$EV!NGuJ~p?I5FU*+sVh{82MKlhG+E4Z#4P#tEdvqm}@jSqqjkZnV&(Mz%&fFjk>g?O23%8B(^kYm3?kFiJM z8<&hVCYw(g29Wm4SeCCM0Pm}k(C~|mMU6nte?ruG;pR3rl)&R2h(x)Y4#dS3VYsCw z(Mjbk_*SN4-!`(+rP3m23=*pY`@AH&v$a3f5W*SCP%FCE^X~pFQCarq3D>JW3Ql#t z=Nq{BNM>?!u57|(E0${eIC*Mfw?B`$+RW!P(jpWY1*FW)Na)KotzE1#CBNRfLcC+N z&(|jlVpn!XvWXW!p2mp~&x1aoSKM4XF*Ars3y(bjnti^2RlXERJS=l%GKfu~Vg1l5 zlqy-eCfB{#2_t#oUas%1@i;EvzD7BIh2#__?V$B-On|M39da})quS)D^ zNs?eh1NOX3oX%wi6ZUS(oSh`)vZQk|QH~Z~o^St92@&x$it7UVvu=2gCX6~U!y&Ok z&Lk%&dah<6sRW8lF5rJm%$OJQ2#u2b>vT$e1LcM#3odI^R_+HTD`Od+NRIZS;%9b| zp+9eLp-r#EU>AYVa!|rhNj2TnQ-Dnxz!%wt2R|ofY7j#gvoqlVLlG-(M3ncXF6FBt zL);sz$X7UHf27nI`IX$ioibiYPjS~fiAwShR6rfH@xn@a-_Lp{d>)`5R2Cbxq|(1C zhoveZ{80_kM@sSprNxR%W-7pP%>)hX@wBgQ+cxt-63`!cxCxocTV0b#pAs$10Qgyu zy(*kj6mUw~yM+utT%G7UOmHgPF;KXUS$-1W?5hN;8u^6^WuT0&15s|qiFY(`$z*^h z1a-bL1%QC_1v%Bp%%{tf9DN2k#qj-k@%6m(5&onO0}m7Js^>l{l#$I(J0`!a?cRAu zSRRs`kOtG-?@tY;H%|(F4y$3$1=!m9`3UVk2@)^9Tfldz0xE5NQ`_NSS-B*t|89_} zm#8U9&{G`o$odVy7A&L;99raQ2NW^l>e* z0u=~f-PBJwU=i}`M=~!Q>hjn2?S zDw`}Mxi#;{dlfZwz!O5t8H{}f@OpbbjK2#A$?V^HyL*DtwhqBm;S9< z+hep!2SkzVL=C2&Z?nh}#O=CZROLrd1z|O!cytI-&ZSEV7yC~HS%8a^jRpfu2Rm+d zFM*!LAl<~O88g9qV9yDiVJdDc4%MLxh!ItrvrOa z0;-}|jDNLKiL*r(4`s;h-jI&(bD9!|K(7Rhe8AlALqDw@BfKpx1rB=ehZb zjQp*9(1yKNI+nCko&Z=#LxrGSLj*y89sS187g_DKlp-tvoYN@GB&*-7>IzkoLv)Lw zy2iDz3LGGKA$AiK?*OKB@ZnM?3E)qsxEFtu`z%f#9SrS|jL;b=`~kAxH(Y2^dl&_y z8&#!m3N@35%E`Xjj0yZJ$$d?gdpYI$9Hpo(zThWwCU@-6rZ2?Dw|2=cHs$&rr3k4` zkUsk6G%eU5M+MY4h-XvFvoL#W&c{@Kbl5b=|DXTGKa4i}7`j}A-(+hqjFcM?aGVrf zLTJd8F9K-rfAmNH<+Dj~1o?)St`JkAwEJSj(Tvel%2un^HdGbu@<=dQ0kH&zIT)Hj z6xs}J#iw`+XWt$YNFzWH3MeI-+WS+7ZOd%Q%geLpAck)A8{bSM7S6H{vF1=9)!OnW zQ9-Ve(`b?F#Iu-5K)Mc-I$(!u(Qa)k%<84!+GKJ!3%4j4a zv3ta;SEvwD5@9SxxO z&QFih9Y#ceQ@6fn{#KUQ%+woLx?|^iFWXE}S>1{b4875ttz( z;XKg|YB#GrqGmQ|{P<_59~*&L7`swQcONc^YpfwU1hm5Z;gzHdz<;0RH;@tFEEu9ii|-a|^Gs-ic+wl{0nLS(GxGTMX*tl^38F0#0Hrwj)XJ)yb76g_>=qH0po{jyT~7v41i%cCW+v z(-2h7!Y?n~9M`w#gI_~?kg=JOZvb2=YEpRy)gnpZ=7L%-hfx>Hs`zDLYRHDScAv$+N2#m}CcrA#qnZLtOQj zk{tZ%VTGLLygP|LI<3H-4|!-#dTc9Z)Lq9P*@r*v_aqyBoQ>+s>m4S`to z^c#cO)89fr)h<^#$R6|wms$i~q=vwq!sNRX^Fv280Ui0<5pqRmT8}4w@;2}+^@3YW z!M@Y>NHSILjf(Qg5NvnX*a~a5-1)O`4m}DkIDc6=r03U(fmbnlgIA>&9a9yiCV$v; zRHtg=tW2zmO`^!bcu=mWa=p<+j>}t`RG|dX8l=j=hPD&~BQW5b zg;P2)1M(4vp3COEm`+^Z7HgAC9|xfh)vFI1CDIDvu`6xuw}4zJ@@D>sNb>5?4z1d+ z4^4-&B(}-Wj!z4@7VNqQx3$g#KX5|W>x7lSk&-{lhbX04z~tigO(}L~)mC;Ij*Hx3 zZSDwO5#VdHN-ip7&KLAc3o|f-Ka3$vRmWuG04@qN?=(vae|IJX<8a)0+aybs)_3S>e%fN1}`PIA-N&qS5Gu{0CS)jQQtiV`#K#w2;q8URezwhO%FC` zQ&Dvd8MM;HX^(d_toSR-93UyemZW^K3IS?+ciY^1B}+C%d@5Q?QGhulMNc+o!Ioiwl{Y*gnZD8 zgyC+Tu{I9znb%ut61gY3oNzCnAo9%o2cTTe{ef*U)}+Q)Hdci9vhAA|P(|eAhI6@_ z^-sy=aOXn}tEpmU;`$Uv-z!_g)X=644q8md$ZqXl^d_E!i8n}-Y2{FQdWY)}NbTFmkg5<^CoiISD-zr@%P9Ci;JQHFUJy(XoBNmHriEX=$StH|Ph|q5*s0(D=iFM$W|jLfB^NM#^- zDK%NEod`y<7dWy6h)-?t>%T$7k%OFj!zq9YISFx7aXQ?L=LdYKqcXpQtqWW~Z0R)e zKecWwrVJ9K-7j+V3jPUp1?amjE-U6sBEb3_grXt~jW-_yf1I z(8s4oiOUZop2paQD|YR`w$G24f{Yj2g8tkVJUv#<#0;yzX`)rcB)s2fVH36E6B8R& zi=Qz6+2H&a_t6^~lI`Ez$CPhc5@yp3G$bV0KZ7~e;USs+eX|J-0W#=c<#9F=B=f(o zr_jg(V>VqQK~{so{o{?@XgC{8Se=;Het@ViQ0>f!~MTcwx`>*J) zU6S`Mgzq}p0RA5g`2W201qYIdbGF|x%2Y4}Ok>&wGrsC$yA^~s%cilgFfK8JZVa#$ z7f-9Hrd7Bc2n0QFbjgXIvo|9zkx4SIlys*WIT0T&7$-xCxyn@*ni@?+<{-h*-5@tWaJ)=uf6#X_Z=PDuF`X<0 z<5CW{udE?vv!k_@C+4%glek2L>t`j*FE%(3)A5AC_kijpKd;B3Dc9YUm7(qPk@uHr zAEO_D=&5Wl4%ew-`LDE{`RTItu8w98uYf9ZH&+{c$fYBhu!B=WCJ~r)sN@qK7!K`# zp|q5pPWQE`O^j_VAmwII3o+#jykJQ2&7*c-8_|?l&Vt~Woz{ZD0c_0-hVrt0kz0aT z4SNS`N?b+UU*;@xxZ|0DCuny*;>5RS!J+MdD`X^L5j}nhRAsm^9VUfi=R+G_&O3OA ziEU}rBU3XFVF~s>s#NG$rtR<-d#+y}IegDK;RoNuAQ0;0Khv-y)EUkY6H4t*_T|f# zWm-20;5AZl-0_}ocKq@nWb&djICh%X-&yPa6v%ZjNSDcA?Ttr}5}}lIuF=-QM<|cfAa6XfnlNw(0di&&2-OWZ%^MEKZd#LC zOv3AzuniV|GQfPVT$Y>XGrC#Ci3cy_o`J`QQ4cq#ABbW^+7rwX6Ti=dhm#ZD3%U|1 zmdL|{34Ultc;Okeh=Z(aMI{y{BOD2!#oz=kusBLloi{#iKwmDtwBiQcK}T6U3t* zxt<~TQ|Zuj2m62(Q=8%q^9{>T8<#fKG7!p|I?x3ie&U`j+@qk03YrHNlKuIf29#V0b0 z8K#l8hI{Y^LWO)fohq-Ma&!d1H3W`Vk654pXV36(IgWWNOEr$u9zS%3*z7Se^9ds3 zusL8=gvy4|E*}FEd`xchW93RR?Qz@yd(#dI z_PVwXhAe1gRXlNMU6+1)LDjc)uzAq#s8?*m-&Kgowj@eSmzz#Bt#*7=`cH9av&q`% z8OB@OP<{9^cny-JH!h$6Lev>f$(wa@chwMWo1g7Rt_Im&2^jIV1I>~&2kZN;aTNLi zQhj|Mb!6RWGG28N;^8Bgx>>~&lUq$-DpX==!geH`uNxqe-30WSSGoojc^fUOkRYdD z_!il}eyjIgcGPWL)6{S|q;{j9!gj4ZYCFJ{!ncHMeXBLMwejk?4(7epz4(gIMNNDl z&;2h_=o)_yEx&vmG}2t?nseARZT)Wsr2e@f*w=S^Q6MD`85}o7pBNhPzv*zA6p0|Q z{zc`rBZd4At@jTpq{Y7$Y)q>EwqPq#LE8T_U{Pk#2*Ti7h!+Bxa&r!XlX5~2iSmE- zB%@R}?7lV7olDAyRM1jor1XAggTZ(t+PZ`qYjC!$z!50^$T3EZiKTHW=O$+t*(Ob1 z;TJ0vvXCL^wy&kO#dE_k0p*H5owxIg9j33rzl~mpsk+* zBLUWZ^M$-NwQ{?y862tabkK3SP2)yZMk&*=%NDWaiVDpNcD;tP4{^#85qXHnRIz(O zLBRRdb7hagvyY1Wt)ez@z**#j{wyDiZ#iN{TA`#c-#+e6z{(;nY9C-y>qLwoU{urV z$0JF@1TL6bHsvf~(}Dh>U`f zvRUiS5b-YZ_pBdr-ho1VJ{f}^E7e(h4resxQ(1L_AoV$&!^h5IRI+o*T;~Y!7yyco zo|6>=2exCO=1LMn9#-^bxHcq4^FKJokQ&zAqdhfnrus(BNZTfB-#9Ah1x+HBp^g{a zj~DLOvnGD7<*BUUdkQ@+m@Twj;2Ez`a9Ob2bZs+Wi^n|6v!miiSSAz8Z_H&ddM89& z&@h{UEP`8lzLQzTem~<#nIy(z0O0Cgi`C1KhHJf{1iPT5lB^nBa^PwhIX-?<&^l+t zl!(+6$L|iMaoZqbk^`z3kC|xFy{8nhvlsJiPL<(MR5Pu`r%~DDPN8>y_|~ZhD_~b$ zmyDCWXQnfoW-(U25O(Tz zigoD5+?hui?Vw|1Q&K6#AHc&d8}N)k5?P%;x5hSK6jq!?A5uY}>YN+cqj$aVoZL zqhi~(Sz*Oa#ecfr-o3luF}{BvJSS_c@r-q{?t5PIn%IE%Q#zC~l6V2E9k(^z&mc4p zXC)$;Eh;j3nE`ZWe@BA6M$#Z$wl;r+d1$_GCbHRd(Jk;hqsEIkYmlOsTuij{;{wkVeILFp)qdyjc9aFn+-j3ITrwU$CL8C2%37B-0K+=MRwX_s0#r z^FV{Vk5peY=l*#b#AM>r4(DRjL*B184nT6jWcd|IiYYH|$hrcS2`8n4Fa#LR6Z%w#eR)eFMsScbf`c(mvVtr3=s|x@afD2WS*K-CR6N zPigJ?W{00|w-0MHpQQu_g~yaD7{aDQunwGy2A-8mrx$sz1!Yj%2>r1GeJq*+pMZ$? zT8pn9WWe$gcf`T%{jXaPD07Y_z_X=Y$ji3tT`e=~HDqHn)2a43(Q zb)+QoVS}0S#T??ipbYbwqXZ+e3ZTt{zPJ#L1gWR3<8zR=@%iHJN+wE>n>hD#bwPg( zMLU>l0&KtBv~}>Q1&Co*t^1jUE~QfxTj6?S%8q)6iI}td%lJ(+iW04&4;8xI$<3$S zNSR1DR5k7_-(_$r+fbBjneh`OW_6amboz(viKR5H3tn6Np6Ku>V@y#B7of&1qq$*2 zw{pb|@qGXWl1YBe8Hyfmp`P3~zQJ!gbww?JNHdH629&L&IYe$F0))enqOg2le6T6% zr`1OM@Ab=jgC)XtT%3IDX| zQ}H#}43aoGeAYrel*-Rf9JZ_VI&;S<_;H+95T|0ftuJ~djm7e-ogEO!6>h0b&gcZb zRNS9lvWgZnC!EyT$#!h(p(S?KQPwSZ;7MCUA2s>VbQ7@vyk+JR0IJy^C zC%eL2{hHQ5w`wyE2>#l?RLENbrm*_YaWj)BlsrVj{j!2 zN@e8y--)utjuTSxuSu_{V64OO3xjY#{}t0aM*4poaas=h>_}g2j7U)+DIVZj{0Fe^ zfdz5_K(BSHg$zz9d0$>uVHCB52ov=n zREvLJTePul~$Ec7?&Ih7{IiVfG(+i@a)d{VuxS zzotPXb?J(>(Rb_E;|wS%=XjB>8xN^DCP*~~Y{KxUW5Hdm*XhwOr)RNro593eLtI;H z*NyjwM5c7?+w)oJ#?IIiL+)laO<1fp=BYOezRybL{!J^Q_)5hjtcjt6Jd58ixM1NM zz%iYLhR>rDYt_Z~j^`J6xi_8aNfuf&?#OW4UyZ9vfka(`d@||Cm~4jQphq2AJT?s5(j3og+V^ zq(h)?Pw;qt{iJZf@AcaH)1htn1CWfajMgDk$=bSJiHNWMG_1<$=P*-W?E-AK{*dlg z#^=PDpqbPr?wrkk)OBZG!QYIF#WIfKlbO`lo;-oss9k3@g~{d=o3pfbAr zEHVnm15;9~SX7dhBINt!<%Rjy>1UtZ#(h_Zk-FhdxzEabnN40f6)giV8UUe?aF46d z>eQ&3QfVAZmu&y*Fi|;l+l~5m4t~YBU0 zcsj(``SdVEF4eAFZH{D7rDAwOUe(Dp%6$EL&BNu`Ex~`YLwQR02*18yi7Y}YVi+iH zDgzk|@_$Yw^Ma6Xf3ZHTyMb8jU;l2BRDX3yJX9AibFaVEiM7CpLn{7je9@QsU#h1i zO$t&O^q*vqX}@5o69f>D66#+$l?LQ6i2pw*C|kqlA5oQ`0=a>XVcPPxYbgdlGdV|R z8)0YpW>@@&$^|2nrqpWVRkO?|Ja*!fOvh@A&_N`)x34Ze6>h<;zqQ0+qGHgIQzrYJ zsVc>M#}6BIdsi*VYNt0gLU9S7{{hV41_~gj8VTU!9>?J1W5(Ku9AJ!b?sYpD(RfNQ zQ5fdkuTvQViFYAQgFStr%?sr7PaoL+t7HLZCx_MiQ8`rTeYEV&^I>lvQqkkC_CsBP?@-7$u+eW8q2i)x8@`E5 zY-`(d(@j45{zzL}5<+@?lLXC2-edFWc-m7EV*jUvgo%ah_suKUVKXSuV>^KmwbfKJ6?}bx}B!+}G5w>ioNubYm-B}dGT{lax0Q0H)ad1r7yAk3{3$1p^ z9&f*FN5;Y!=7s&Mr}<|#tsk|MK*q`l`O8nF>V*O}EUrS|o8MkR-761a@;v~FtT|8q zQ@FlAdv*Itr|>>qR}rzw_iwxB_eZ^FuE+e?xziGjE8u6`Tid_uj-wcdf^N3|_%U{5 z=QRn;%DTU}ul&rGZ;8#CE?N-EO?evuHU8z4sWzLrv-9a)Zc~Ovkk6}Pz(kySeFPUO z2Zdo4S$r$hvJ*A~P=@0>&U^v*(S{WU;<;us&vWrr6J|3rml2K($YXP@&aO=?jGqT8 z60~Lg>Mbsz(h7v|Llw#~o08&dpVkvMthHWq7oqJUL!uqhs6!@C00OW?aSbB`2NUW% zsQXT}72JXSQXM6^p@uP*-Lw@Nvr9Q(i-9RCP`m^Y2~bbJfQjH*MN^>kve5ULUy@gV32*yDEhTpTCuZlk7Htm%c8eB!W3)^9o11O#luDBP`FDQNh!uzqlSRc!PV_~Pcz&qwDQBsR5(hZANcT!oV@m^we zc3lp7P{WsekyZ*&9#)zXJ?ku)Hh*#RzAOI9sVkG4Vbpd$%_NgF>~aKwJ>}^q%C5NO zwb?IU8$dXt$@z>?hEMW&$Z=P-&<~u6Dq3sv-RypzZ+1{HZw6<0xwe9en+)jMb%FsE zLboYQPvvU&)7#OIpRqw6dhI)^%m2vJJbYpn1zh#oKE(iLi^6geUprO9s(N;|oj*<{ za|LTE;96BY&>g&kbP!Xkdv*nPnzvGJD>?nReC94X*J;G_AJz;rwm>h@hq4fzm7PD~ zh&)_!?f}^ozn}-rq&1EBYJ@Ynv~EuLS-JxB`nJuR_q>Jw=zK8C59}_<+#uBr(PW&B z)#}r`8sGzVY_i=^=M}R|b2|7w+JIwrzC998AE~w#b_^I1ZqlPXq(zNU3}4!+Da334 zR4qq8qF(7E#VM^aQ>s125pB1zo&KHyqr=sdPPWX1R-JlZxvW>?UAHdx z=T$f3^64k!W#!N-ghF$eF=a#$$JM;XbMxze2u1#}^$0I7XVm}NW7Hv}GTlMqrJgE6 z!vA|i@}USR3wHTsO-Yqkf)oN+Cc;%Vg>ML6ul^*&loGZGAOswVR+taym^h1}Y6Xyj zH5lg47g=?4ILU|X_QwoCL)PkoMX?x%G1HPlmmL%ul~$6l;ur-Mi>`2zjGdk@(ve+6 z!&Cox`15v7+SdmYTvR|c;npGdDle(e$6AG)i>KgV08~TeQbT;vG=`f zM7Y%MyKjR`F_(5`xA?WBcfWZTgLn4!XG?2u-4mi`J=2{W^LzPDtflLpVirGIphSJf zw$49oAkrET^%GUK89laBok%=qEsT>q;2#(^uV=fpW&@&{_TLJpH@--BO z-);CG?#%8=2q4*Ku&=5CgnCU!feEc4W->RV)>G=$WT7uk8D^Z|>p?$4VX~6=Hhx15 z8{8v6Fl4+YMpOi!?EZ#Hw}g@@D$HMlSrTg~6U&*#Dj~NM8V1-lFMaM!&#b<^a;xSD zDT#@Kkr!Up37oE&Ckcb^vo5f|+j}e$bYa2Uz>yG(2(gH9Em(B|_CWM*u+5+vpt|Qhr*t-QSSmu4}cLF#fNs!_pcxUg`ap1zg?9t+No+I=-R7Ccb2~_Qb z7BI?#^-)pcaqEKs^q|@tG)^dlj$y$!g5@b8mLfXa-^mfjRn-XurfhDw?b33gP7zt* zD1d)5|B_A^lmmmqa4yJAn&G!*BJzt+Yh`5rP`9Xh9_B7kzQRTOX2`mj3!7t6qu;Z# znr8Qi(Q9bwi*fsFL|2f~<6}txkWi{4d~s}@epL@3Qaa

    r7fy4uP41UXcZ=+$82u{e02d|p8jY!8D;f_9$qcb&loaXD9a369KvJV^!Nj47(;=40Q{G< zp*2Dma2&eDGD|2ESnL#)BL&G%NwNjV6GrP|$@sxMnQy(k4Pu>uaxx}EoOP}A0))*qc&#`SEsP4i~ac_;FpA|6g5#e`i3uzOetgB+_TD!q0K4`mJjOhQbo4 zZ>q&o>y)$G<-J;wT?mV4IFEFWk_ zvxe?_VC(mnf~J{}NEO$CWP=w*opw)dYO`Xz##0LNl z8(NbnU6c3|UIN_nwB1Ikv@4R4a(}yeSDblkP+2I}EMX`%Z*$ur>#SrpFIk=sIR1_JksjJS&I9h5y`BfAA9w&ELhQ?IKkpAZqF{34c2L7BTbwB}ufVJ4+f=p3{hn~$c={l3qu_a}Ub;qZZeeyx)1lYW@gUw((~_}j{dAgbe_VHcF8w@r-Fe6H z+Y0ZGb0B@}Bh z;!}Y0wrae$sI+;dvgIkHSjfBdg1mL%ys_h=Cj84=cg1=x-=#+}H7sPb7Ow<1{yR~q z4acBx5A7q&k~47W-1|>pDzo0#rr%GjCNfZh5B~+dt%lL%0*U$uwOrT6(wUELWv1Si zesxC5l3k-t7kN@rj2*j=IxGiI`!>&LQ*04h_N(i#Lh!O=j;gBAg6b6}udeB<$va{F zrn{wL3KfGoFspuJeoVti--Pl!oSkVf7*7FqgnlXWuT?WJdIj&C*5)D5uPo5j8XWqg zBOLv*Kzg!`I5mFYf z(mShZCdalI;-o4j?CE+@(Z5Su94G)0?r@i5P3~mHh3>Si(!7y&lm?Yv(^=16=!d@B zwVZ=A2@I7{BA$y`T5Ui0OaQw4HD0K9S52MsZP5iWVqR^fBNam|bD(j>3-R2sHbAV_ z$MTz^^Ykvf^gk)t2}5ON>5HsYX8L0aLnFYI%F?<=!Xa6*UEGVNKe@GYEG5!~*74J* z5Agoz(;05)iFPU2fhc2C!4hRO4?=A_n&bldBf{2`frExdsLw^vdFiBD;qqW3tQ+CS)Ht z*RbIF#EnBTHeDV=zzPm8=qxrwUPR{-o-DMF_H_}*;M-FB^5|Qi+bq!#y(20vMrF={ zt;SB*ywiQg(Fc4RJ^>Ws{Xs{ceqeaMs3kC1(!q^imOe1P{+tlzoZL@wq`W4=d$Ah8 zgnv^;+SAZcrdLpkme2lljuBcX5nBh4G~WNN#+kYUXBz3J@lqo{(>H94%CA}`fvwf6fsG`Q6` z1f{H0#eHvZR@05z@H|k^G9*gW}QX!kq!1QQAGu2|NQ9j{0=Z_GHJ$wdSOvB#U>31jA>~%-JSh`n=VwK2vHy?Ei|-!@{(V7--hQU z9j_T{Le8qFf*xp`?l+e%9N=soz$^_l7)8z%8$wG3D$dEIFGIpOL zE`P$`89DIdn=*D`8(6U2s5%ChZdc-3-T?)bocA03Z)rjh>PWG99a3p;MwBv9Y5JCr zzxNni8$$B_`^aZ8f+YEukVxAElI`E0rrp zzkj~I^=(l8sO=sN_GXrMzOBJ@@K8M(e8dij^*e$|Z=A_$XkcL|5{^5oF zwR08demlIteH!R67==yHOfj43=ClSEcs!3i?jTLMaV0sFpCs?ncT?KFSat2$`J8H| zIofEDlK3&3&IM>qA>T{6wQN6;K4MV3&~IyLW#($@h}#a)9kuc!@;7tX%LSFW{qZ(7 z8oJFaEY+=Vbmx(5)u%RpZ65I%ta3=)8%jjd>KdUmZJ|)yl3wvC@9Nv*Fj*evhXl%!Aga1M)mnO#sL-2o8e4bxU-yeLguitFiAWk(=jq@$~YIjBN z6P*+5)n-cL&l)I=mD`;ThOK@D9`)}#Q4^B~qu4gdgz9`!F~fD<{O}&I*!TarG;V^q zZ^(K5vJC(?NgbFF+S%*}PNKV2UVWy=$^3Xm-!{Vz7RMP>BsEBSu3+L5Ht{$TD zZZc<@ZLdYzr-D?cL@R|C;xQOo7(zCNkA(b8iwr=?hCU*@;eVk>Nlt7Wqn=80u*9Nt zl|(oZG_M3>gm?jQ{g9GVxYdD(0C%d2Nsg#FT&zmE>`x19w$vY>b~CwbW8e^Ud3IIh zaLJgR91fy*pKyNA*V}3t3#u#cuZ8sZ#`%qtH(7S8y3_3{1-4E^;yM#|9oWQGJ*wok z1{CmkasG=>hTCa2e~(+fb<J5NCE=`CYRDiOIiApK!cPixuzl87$SgILL7li$WOHYD{_X1@>8jKzlY9AhxlHLek zqfFIVDP4Gl{l;IFct(wuBRGf@Ur4#vpM5fFW<{z~LfGuK=AmnK*~>#tqmsvC3KXC? zhDkr_*uvW8 zYgZoC-lY-_)%bhaEA96I1ux?>6;B=WX|1E-tpo4103p&Z_gmL%ThVlZ+tFf~?6&(V+bF@O8k>K}~_w?+cEfuyxMBf|sG*9A858DrX71w_|d3 zp`g`C&6z6D5-0vDe&!wVQCZtEmMS{9M&-3Wv#SW~8t|ddp?&}xZO#5La%fQaL`R5CRPAa;|QRZUL_mTJNo)P@1BPre_lHb3@SbrepE7UllZ_o zJNip4i8Mi6)Q5O7pAT$>-aJ6)akrjl!Wic$w1nY>LWGqD<&PP8dRaNI_U;e7E37Y( z53dSPv$n1r-)RZzmQYY*3faJ7K-is}tMiNouKfrh2(iTb?1hkAa03SvhPODOHk%uq z55CwKwP3v7(Z{yhHeJ+i-T7GT@m^VF$=OWv-i(>HxS^HDFHj#R1oxHUl$Yw==heYZ z;qA*p7aIB1oy*1{McvstX`AY)rP=xB8ONzM+Ub6HK3pzcUDZn8@Dgs&qfNM4=x{1) z$z!(fh(_?K>TW2D6qx~j%)x}?VqfWI<>)7EENNPE9pG&??dV+V(V7L7I@#`@NNeT! zv%pyL+6M8h!jYSsWM(wNrF%Mj6NtuPJv+@bMh}39KnZ)3cBkbvEX&wR#6ur~P6^Cj z)kT9#ej5VLL_vy90%v4?QAU}}zDgp@R(l|ywDU~8>)&f!jqd|AL&fqAwXO-5F9(qX z7?!N)syd{EPl=_+3`&lXY5d}fJqT=M6m5p=ITAZ;O0ft_nq?rz)0R)`rm0wo_v|DQ zb=_auL@{a)RW5&WhTz-FzEE|l!O|%A&gop#?2WM!3=nDfLU)4TWy@wuXvEjnX%UUP5 z64E(w!Ql@CYggy$zw%(o;BZ(DRj_~E!GNQ1g$xs2` zM}7vna3lt_@FaxAmE{(%MTXU6oWZnzhl(N$U?h~sDQ8mZoy^Z*Wd%dbY%?DaMA~K- z;&8b059+oxR&oUhChKv;kEs<{spI`Jz%O$#c-iD6Ez(Yl;|opi6UNnJmi>6Y}uLy{(l&Gn#0%TTaT%;XlP2_N2!h(r}=eV|IS2k2?(WDZk7^@xJt(an{ zK=-Oww%cn-osAoy&rl~PV(XM~M76Z2u_B}hYYzN67^%hb-92g>Ph8AfM5;r4H^@a0ONt}$W zGhOGoaOEdrjbdL^EcHzmFy9UwVJ<^9%w$9p&gDXKqzudpC)o~xY9tcbx3w4ozHi?g zh+skQTX$ZCPI60kbuzmsP{QSckd60@q{_YHs85}~}^ zH|Fi430U&|n3Z}ql25EJjbzcV_UCS_4)+?u;yt@KVg9spFYF^4FZFd-1K4mjxv{zq)J6JoTz!6 z2gD!;D%mdha{{aj%U}AQyk?GD(J}*%oPl!!hOIR$ z8hJyZS?ok4WCHeK^~_|#vdSdF8r+tX&^fu(%dcNQ=~;%e(`P^b7UUS_eD2@#g~u78 zQ<=EGU^b=)B>KN$JBtV8+F$$I%$sJ}WQpv-onwbX zQS?Uy>r+ux2i|y_1ZUq|lnIE|Y&f9aPqWxa;5A789y_L_LtnA#e|G*hsdoT}cL2vE zJa8ihASnuK-tK_c~k ziaU{o8xybS7smUL$6h>Gz5)IBR(ybtRMz`zE1m@V7uWy#{eQXs7DQjjq`w3&-%Ek@ z8ot!LKOz1pcmcSY*_yc;x!C+|FaGx#WlD9!dP5M&cSVCXl#nZ#ZsO+KMt&UHmjkVO z19Jq~=7Lhcy}hm@LPh$ct0BQ|jJWu>4rUbX)Fc;+g#~$nm24p4xEnnY6jW@3s&xVd zuPioLpiP`AC18RZi&RtH)VSRUXT-`Gu2rVs{!vT@=TsG+x4rF1c!`h%fmTtQxdM3@ z23#$oO0YMgg21C?8e7uG9GSQ8DfY>OqpyYG$yBJQYk^y3g=NO2#^Uw;BY&fN8ESU! z$Mvk)t`hd;9~RGf@z@~qw;vH+bQ0MY2vk(BL z25z-I0HYzl?^MADDY|5?Ss>@pi1FrqjhsZi^_m!ZW+Rth(g?}a8^#0?I#31~bkn$U z7v}277SnHu7V~b$vIamA*=?%)RE&&P^P|LvBSw+TBldTW!2>6DhHic|%9%u#bQsQN z!2{Z#g*UDk_~z#rRqA%TIlx}1;OK1fo1f~I2Y?mTp)*h!f)SDnGSvzOGYMzpr*Qo% zYl*~8m(_`U!FEpC60W+q!7ppSZkn&Xamxh%QfcOqs=Wj=fh{HKPW~46K6{F9D#hh3 zyX@u@+rx>9KD?~N_y&4~xX}h&q<{=EM2l6T>AVnjsZEi+jZnTAGq4z?iDRD4yJ1s& z2v83lHSTbg@M|rK*Cu~m$8H2`J7S~S6H38x%!4F{ky=!x%xg~~VyeqBUy%;2qRCI! zo<0@v)VXF}H&ieQj>d+}$Va7|446!E{F2k2s}nC7_5v@diX%lweZAT5Zxg@c5fUo? z*FMYu9tem42oK21A+;?4lKB5AI{%lHW9LiCF(++rw1)3v93)NN45QaDYi|bAW3RGyrQCfV(PjkQ#2}xMIJ&=8cbxQ zMPEb?ZZQgJG|noSQITT;2Oy3&3nXZ}^dz@p%t&wnZeXTUbuqovl0C;LyU7cB3T{*h4^nnu-l^7=RrGdjnvQ2KiqE60kAMJEAKLe_` zv`oCJhB!+T%uiW+PhlqpG|yX+gAdwh4JAiWZxOmNWCMwnExdG1y~vu6w=WB9Zzjdk z7$r?YFwK?fAG9_J68KB8(+ryWGQX>UubmeM*6QfQgIOU(lAE0fCM2V?v- z;ofr7jLX_KBVmfg9y^+bzUypk+oY7FLAY6YtC-Trr*BaBLPJZs)Ojo)q5aWzm>d^X zoeC+j8o=tHL5{`#fZmNv>@zW!ZK)u!))Q`b(^ql*FeJNOJDe9|3=IxGal;9eF)|R! zfP+5TAWEKU00gPYulOUgFXr*qUkhHxZy8Dd;K9a7O^cqMN4irM$5m|&h3s*{EV4lM z;82-=y4uHV5Zb}TM@J0zNIF)dwwxBG>jwJt`UaJb8?02HSLom%{wXW2QFzU-nPW*i zw4%CR^x@^!W12@bR@}R|^m^8ZL`=feO9>Mbt=G zmG%YG=1h!Jk6%U3nq`_8-^KL?i9$HQ6i@v)5CXAlx504J17g`JsBbo;;Yg0yRJ>{G zz|1!>39ypMXz#1J;o`u&G zQ`u?q<63TiXc?iO4zr>g+4OuPCL)jf^+6NxsDCc=>_~7Mf5!%{0Y{Is{1(p5St$qO z@CBq3@8t0<(O5U*F z5Jw8VdO!n(r24I1L@DD=n_sTDYH!pF9=PtrKpV6gCt|g5NZ$cDCZ6f>yLw|}HqtF+ zam@|%pu#5~)WZEJa}5wyOQ^z?nn=W{BU)N5T!}K@=(ubptFmiW+z3v=^=w29Xce0Z zwqlEMDj8QEOI|6aT^tHpqHU0F(XN(dG}%20yF3(YHQ~W)_FwMn1IF&dW;HB@axpjI z36idpSY*<&sl9)Et(>^Kf1lB~#&Bh9YQ}Nr-m~P~=b~nbv7380;m>^~82=WtFYNKF zRziu>`-yI*2lsdfFTv%YM`GU-U@e2p>f}IQ<4{9&boF4+15zr+7_1gU9uRwF!fc_Y zN?pl~-J+czMV>LnJN}|H#8ROuCLz^=sfGhDJwdC%tSr{Y5+iKrnvsP^Mj<6KyM1u5 zn9h2fUOb7LG@Rs!k9U>rlf(0QxRe@QoksbD=p;0&qUhRqDgKyDXg$gIQL_e%k3zn7yi zNwaWJ2U@_6t<*Rp`AEw`zpsgU?lvJwqyjj|yBTFp69FwC4XZ38y_RAbE- z_xZG}^s&Fzz4?1d4?oD){#+znND|uzBk0dYadY%wM7R`TuxHU8??|7>=GGLV6BjT* zv>D0kGPX%P?+jvK1guj0arnb_SQ4!F?Ylkr@kCtFCi(s?83_Le2E1DR)_FGn$?p5b z;q%7q$|L$x6H)1Wr~S$Fg;>Gsb7w`Y_}Es7eQbmoLtBxNVjUchD>g0su2${cI@q;$ z_#cO`@_7C6dMSx1V%z;-cnwkyp>QsXzIQ#o{LAncOmpaG0)+qmFQ_DXWn+MN$YG5$<4%Bym{vJm;Uio=~1Pz^6-UHnGVczS?o z$YTL9O?u7G>8M_l5s>0yp3IfrY>e{LePaX+GvZ@l0m~IQwzpJejQN;v{ORg&ZNjOInUkHGT36Cf*?pO&26liP<;5ahq{dnYshqe#FsAvVL9q9kt2u(tHR zkv7c&cQ@ddJwEj3tx{$)3HoCKzOF;F;zN>`*&emS^`7_C9=|;fxX^=_j3V>%sl!)X z%|Q{8=cu$+x3^TMDdH4IlgpgnmS+-s8gCnwgfG4>4Q=f)?~G=1dZWd>6@+M+gtYUV ze`cNw^ia0O>~&|U^bD}<4@Ur>M`0^~yDxR&_CTFJVcc)@?%XXw!AsF@EvvSD3oXhi zST~&z5D?5k;`zMC{4?#eh&ez~O-f9jkf1&>snk^%3ptJBWtjOCK{;`qb?R>Y*wt}l zzU-tLsaUyKd?Bgnm&HcWRJ49i8WcHFNIbC$N^D$eIN2CilTLNI>jx*7^F?&hIcX(p z=l6$H_uHTQi3w6EE?<)jdf6CdO|Vk9QXyu6n9p&D1lP&#qaE-oE{ z#zGVV9vmPp#l0(7;TgtK^;L-9R<^IP6ig;0mx`1kx$Q;DhaR@i#7;VGq50mv5m1s< zv8Rk+mOmFzI-*nkuiXIP{ol*^=17J>PS@OJ$Xt<1{ys}&#OX`B;|i&~d%5qPunJO*kx!^lGSQXFtZ=P519XcGPZ8;C10`*@PX0b#=9R!}@LmWUE{8vN`7$SiW-B$UP>it*2% zDDp*XSSRvdZ2V=E^Y8OyjGR@0WaDu<@W@19EU;23v5l~Gl9pmoT`wOYfh8zVVdjDl znV6%K@0a}|SJ~RN#2YTxU+j86h7 zv8!fK>mD0?@ie|^%O4-WTW&HsX2pj7u$sj4^&67d2r3h6ihB1 zW@h!}-o-3cz^mfp>}eV6Og9X;sOmt*@!-?gO5~8S^7`-;KL78#Ki9knIU^oPyc97^ z3)OG{XQi1&V6_uI^%OkeYewk)F!u4?xUJ5P(wj$dHOLoeLVbSFPU`(b5*hXPQngQO86+Y%m!>EHsNR+UFH>$GiA};na8bo*r5SfkXxf z6PLEraybC7os-HJjn4GU51wSaH$GE^tMlLPL~F*<^FYdeg(5Z z0sS+@BsUF`^M9_!mhCi1-hcVwzj6=%ohj0ynGHGeSB_^^yBKZu7lXG3oBA{0ORXDA z2Lt<`$XP${E1%@A2o&sMNY;P9S+y9F;;(C&5pH7p+t(X%zuatJ!UJ`^6v=?10#A`#GsFhWjbgjC z`ULyxk5$qczNfQm=~U=)NJ^Vm937fOMs=+c(~zDd6*j-dj3M>kY{mscv_F4(_rkEP zpXAa@7q!~Lo5A}oArU8J_@ z)}5!jjZ6YSr*U~h3F-jEHnPXvUE>QSTOhp7xyAX1>>((5F zE#MyI)Z^jGe9^EV)idLhX!6lcz%s1=5KmCQ4P2QCWvx3XW;^DHyK(x1r#^ANaG-Di zBV+6qjvzZA_3-^D9GzXvagJ9 zW!WPN)PDHYOdJFr9A8mBdX+oAaThzD<0N&)u_SH90$i`2&c-z{4(RLUZ(;@t!{*beFdn)W5A`#4ZE(wZU2ndSLE>mSAv#)@a=T zW_BnuhsAQJhn09DN2)t zprc5Oi-EnkM3cRVZ+DiG0%b9Bw3S5gP&)NyLC8legCwGH;I#Hbk0Xh5%ETWPf{S=H z7{B17HEkC8(lfq0D-SZ7 zu*;{UIabc2e-F}cj@+H5&azTF_-GH&kquAG8W$-;$J8ix^^I7D3 z3ao*-QNbl(JI;rPV7rC6|1QpF8(x-b_6Cn8aQP}r2|EEUNsHf*kA@>iw|NEnI1}ej zpUI3SEQzU91#?AYUiR%a-w-QfQqYR(J~n@eV}9!A9SduEgF;94I|3ow7`9=o`e>DJ z8i3Kf>kwgFr8>digsK>*SH{Hz^!uw8*-0lD>H!qm_-mlTTW=bq}i{9Iyhs3)lsUE%T~HpSxo;ub3plp z9>dN#4N`^5ko17*o-02K2oK#P45Kx)cp&YGlUhIPae{EY?u<+(TN*uAp%WhHccos| zldOJ`;^_CdCeTsZpe*WM5P=S_UsXe&4+$E?RE#cRW#7dp&Vpp6;&(#~?+gRlrkL!B z(eUh``;=tPYFBtQ7=&2_BaCA#Q31;_CA?<=T@`MYTbdzIYtsz9$)KclQZ5~{POWrR zB~sy6zrTWE>=ZCj8|gV+9cY#xnnlH`FMb(jv7ZDfSvQYG?@FpvRgnq7U;gokF$J*n zwA?HP!QoCam{$~RX)w>1jlD)MTX!{JtWtDE4e>Xr`O4+_X4XD1xujwGy5em-{XzWi z2{SkPHCp`Z$|C>QrFT{fiSYm8|n#C6;-kpfz=6kJhd@&e;Ibfgpe@ncS)g;~6OVi%H^SSe@*qg{a%gby$j<^mNID0jR#L#kKh?TQ$7tORV-zq1Lh(SSmg1=(qlDFjJB3bfbLts{+S#2>wPKkyLnA>$kJ&| zk#Z}2i#Z!WV*%h1As+cd)*dPL6rIDLxHbg;;g!9V%4CX9Spku6fN?z$y_?4jwL>5U zGQ>O}5b1s?6SXy8ao%t>^Bj;HY22y`vK4=X{SItx!fCihZNLt79}EJ@EmTUNXlbdMY@U#D=3FFfm8;>y7f(p9~-X1TFQBjeyKH&TMJ(XIhuVp05icSpfxBM^H-S}2AbNG}v_{K?KS zGrZ7-zHf@@@ep$a_8Q=-T$T10lzw|xpzCxv#fLf+f+lZT#DTXU^VxBqMBe;|mj1Ky z^NJe6+J$M;DS}E_PHE`wO09^jICD@dR8XGYwuFRLaN#u0#OKWYdh}?x;es3tfvoU_ z40zV)WJx(4&n>3UCP5wpXv<-1#M^?0RAa(I@9v{p@w@xA<_VyR%pQ04#!pATqk%23 zifz_Mk=Jxq!etJ-rFuZ{nSBZp6j*reqYM+w+XoEu@VH%pG_$8!@9{LUGUM%A?2+#; z6`OhhoR~4~?8b)=U!II=-*i^+$9I;wuMC{E)48FYfsp(gjAw{>h;t!JW2pmBnsDej?>Z2aD z%7MaR#-{XJ^06E+O3V0m=kZ#R~gb za^Ez6#`~$HWL?Ydhuw>(<4f|}n2tL>v(!;Sp(%y|==yUpPgGMW@BQ|q*RwIZr7ix4 z%CyrfF`n5!&;$;}(F`!Ay{6_cm|o!sXgv553b85iq`gD~fnxbHD<>=Lj^Is2*fEVo z2?;8k*p-u{L;ZUr$0&O@00_JowS+l%yctLVyf#CWJS3xZa)hQ^40ca5pCcmB083+5%>9VZG92li0USbV246#%Q8r3@R!RB)W zX@w-js8VLkx=Fc_yhdIgj)lY!WUOn&Dczr6B;Afej)`%UQ{|CN0BL_vaH~AyYkmeH z5dr%ePq_JH@NyUuct(C0a4>AE*a3l2ks3mTXdo~~sw7XiMP=ieYwPzLYj)hOGQ`Qc zBX%*$m1A_-EGvb0fu)G{?3aFGm+g`~YSM+=8{&~!KM>ptxR_7JuC^tykU-JO-oS~{ zvTc^tKnzPT;s*T|09pq%w~jGvQE3TWnTn-Pb+8Z<@Otl0WS`1Uo(K@@V2C|;A?I56 zORyvO#FhZcr5NGqL?mv!CUTpRGGCb*rPh$#2ItCwc3604IL*IW_lo8M8DhtQ_!Swp zB?tSo(pX7mwZ!7YSlb<>a@k3=JO29l1{8pd{;4-a+^p_rRDO3eoYW=sCA*cXJlM&A z3rvTz#jzBnF>q?cUx`P_l(3|gu|lkD)wh;HFfiZFe0vJbHJVy1m-P>G}8$iAO_d?E7V_$Z!qg7noAZk`%KotJMo zn=IV<@Wit2BPjBAom871P;YtEwz10xqYvW`n|9!GSoV>AaNycO$K8i_MODoU%90+bg`bFn8)DXb%}7e_2-QJ5dL zBnZ=bkEQ(As{?nuqjeFIAsy44Ijk=By;A(kvKQ8!Cn*CXt{12qgIrc)Z3o*1Q*ANO zcgL$+rCH^ho~bMeaAls^%p0ql8+=LQ0JZM#3e`j#=VPbx*-DILJ9T=>n$NPpJPi*1 zLrZ`KWq(VDl^~4L!9%e>;$?_z<(r<>|)79$u%8J|FOy( z6()sX7#s&+Z0GWCkzvqMrTmZQzi#s?RpsokL{Pfllp-^W+A}!M{yL=pEi*zzEC_AD z*DNDk(~0V=-z;@=YhtQ*)y511IR%Cc6Kb7?7KaG@3rS2|K-eWs#IohjR=@czwZUq^ zy<9iFx;?I*KF6za0SrzS%qKa*o*8eA=|dW!*h5mrePMg}n1hj0iNYu-VaW0l>~O-B zO(^#9mAKGoG#3{P&_ZY?gF|sc(Xu2%MkDT(s#xIa5YBuK8jjw^ss*aW!P^eF>%1I3 zOE1s)$nzrW*M*TH)pOSAos-_Yc+0AClxKdN;x<2(huM1~0A>tk$k9T;UK1E3PUTN9 z;Q7SLg5?%=_xx}DTJt>Te3p-k!EByr=5W?}!F~%?kJ|^U^}G<&L=StPGo5cwJt3dP zuR1)UeIWS(4NBWc&qh{e4RmQl6UA~H`JJ6B6I=vVO|n-_>-#%dbM{qojF@2R$Cs2f z7msMRcnHlK0Na>#)iJK+m6a9F+|HLvzfcV*UG{?xtMTG0N!O67ganvDQgukOZ1 zow`{=$1-b}YMyrLIOU(hBa_|lm%GJ(^u9iK-w*KYz8%Q-1+$~Aujj)%JKC<#yN7bS zsXt$ip9{Z!(f!fuc;0~u{1ccDp(F!GmL=w~cpl~V0btM8rqakfSEl}oADRFRjX!RxVhyjn!H;L^JKG`t<#ic3U8m3n*_PtkggI~}wp-t7`*d#V9{E1^bik7kJtqQnFYCzjg zR+J$dfnDjvjEgoy47k6l9wik+{M7R!AXS(?BKAIPa0=)&hzr*qhZ;meKt+hdU!V68 zN0xMdo*7OC3-e8Nj*A%+LlgvqX&76mY!r%H7N9>V0%jeiE2|$-5MUuePoBuW;NIhN zDH%$_4tyf-X*cChiVsq6*=kT?idQ?gENweJ4|)mnR}`Q>AHpfxN$FovKqJiVs9-L~ zE@kMnR(5EI;od0atikDsc;>Gr%~Ca*V$-HS!hBNF@Jp;>y6A6Od=TTaFa|nmR6U{k z2EddP^yj)L>!-oBH09H4mGcuL_Gc;E9d}= zBZWfGib|fNl$Qa;NPuv70)3c392C!+3>Y3_S~fEmmWNqlazI2Qp*PuSpC%`^&*gaF zB9lWRB%TH12Iu0;E(&+vMb@qB!h!e+Is;Th60Y8W0qjyEP4<)IhXBO%y&y4Y<;A-7 zmAb2K7dBNm-*Y;CRoZSUFq{~z=p0=7s&b37V4($zW3V-9r9~zA=sR$ft)C!~1wfXj zyt|cWT*h#mWeLL^a57%QEFg>|{tzaA4o2+AD5aj^sbeuIxQAe)#-;Qt%s3j|=||Hb zr*g;;((!>y+^bQJi?Jz4zJk6+A;(C|qDtv(-6@78RhG8p0$b5w4PiH@sZ`3uEPJ&(%vl{meg4)Z=H}oFV}8+6ns8GqMl3r zS5O+RYiD07x3gI~X_Qe?0hRB`$)Qn3EnAGQ_@lG2>KsuK64?G6F3yA1-YvrMLSMeB zo}(nShtzaQ3wo?6hCJmTVE?y_1bYT1()tfd5CEc|uj|n`DIYy$1?^+9Z)tYqHJNsk1e>y`_YU z4HnZ31kLOR(F`k>#=JPCY{FspmHd2A8_K|D5qQSz3*3}j)jl%Hb?m?zgXDrK{izM; z7SYyL0VV4E6XF_~HhJP8jQxB}YM#Gv9bjn;438uxqA`aj{|d~z`^X`;Bb3eCrx+9x zyjCy-|Dd%53Ie;y;1^hEQXbz&p$8{zH{${-=_+)fH3?<9S}h~ z?ub}LM)KFC=%~Bq`e0#Xd*H#%_T_^~UB`*wT8Kzwf}7+d#ttb>zl z*R=k#1$Jb6k z+p`N87jL341N0604qo;LyJz^@0>ErQS-5eZrnOs4?hnE6mH9r8*ei}M_;K^y!NK-~ zg-paIMWv9q{F+tDrJZ3PAq}$gyILCSmHP$B%_9~T&P~tt&+BmC`hu9x)Pqp5y)jFl z+BP7*D#^wW%|&}kMx%?KG+`{VpZPO)e&gDBnlRGpIiMf0V5@&9onhq#K>;gL{PUG& zj4y0b@3DBhp~yJ9N#YiGxn$&q%_yUi@^#e~JgOO5W8jr}CG!`iWe|dQsCq6N5|lpi zUt+~oG91Cq0p7l1yev_d;+QtC5Sb3;i|cn8F>M>)>qRM-P0*{;L4WGzRq}$6RG!&@ z$svPlA!+Zd462sG2a=gLf&gMlS_*#zWsag#5zi54=-D0CE6IP51$7LkV_vWL+4M7s zJ%f8D#L~EE-heu96-|pVs5$$~-9hx{&<=>(8N^LJ^rkkQ*icAc50{QHVTQjkA|wvN z`Ap=8;+^XZ9g7<}E63~sV!V0%SN*1TH-ZIlk`*XNN0!VY<_@>gLjjw?(D(<+q8px& zYW`Kehl=-)yB}#Xv>EQ{Ng}sU)pZ>1I=SH*i~Ogc?CvAY>!S(`qg}oeN0~UH8~n3u z9yaCL#g>?-b0vs zZifiRx%zXx^$>1;Spp83QBEe-1VEhHe7RwhJz6Ctg=+$M*JsYfPk<@FbE@(S{3MPz*WuV1n>Q>6i_#qX*h?a#z(nrTbWJ#T&7v00o4HGcg)F6209(MQk~-n6msMT!h*h^0`)`<2c-TnKhm zqeHS&*mcp*K6K5@W+|oaZ$X2Ha%7_HV>A0P6erXtqms_)Mm-%yD@o3Nz?ByQ3K7P+ z{R4Oa0BxG(>SD2506)wI@V+bW*~9zGxjT1PU@vxf3Ibeb0Ft7X_ScO{m|ezJ=Qrfh zR~7T@V2Wk-D~XBC+(40&s1Q3`U`COib5_4SRiZ%2#7}Fr72(NnKXk8`IQ#D(a3Ngy zXJ*VB^YNh2BB7O(Jq1P!B^2BUNK_CcI<&HQd&7W}eJOx5U~4x~#KRFLz2KX9NG@Jj z&Xc4&@}|30w#8Qc4v~gnN-URFLHJlHodDNMd|I+W&ZIA?uUUm%#}ncn0^QZmQj;I) z*p&n;d2EzyNvp17e=JLc<_@c1vaEoSZf;{h!qyTJr{!@AJ22_x`WGB9cO|<);yU@} zqMe$=Pa^y6$*wB?!e)u%e=G{2o=(5!6 zqE*}2Vt>nNFMGa!^cFa1(WNziJi`d;jyDP5H+f z3BWpLfj*D81`-8P{}~WixORB9=S3wyoro2P z#XEVd9{)%FM;p#FhKW!-5&JwX3rBN)11D-sQ&NA=aU`eGr-)D zoL?Y?5`pQ5snYLxJ!&+vsMGxURmkmw-RrwU^Jj>w zMy>573uz}ra?womW>}&KS{R%{e9L(^5>z9JvJ9L0=B?Ff8KBhLG_yY%6!Z@^Skal1 z(BWqj%@Sa!_WJlSfN;A#H+#Wu+NtJrqICmjQgd{1cI!4ft1O1adxn)ImI?E{=+F^$h6x4=)(-U;u!Cg_ErP z-{Q%{**1LKv|9T<>n*-=x5hTP0P%T_KdTQl*=O4R=uK5d z{W#6-%QG9%GoNyhz#NOG#~a-o=76S=OmQ{v50Lq_f!l{$u98+hd4+I5-^$it_ZUoQ z_1@V5*8OKnRj~d$TG`XXE#UnFRgpl-C%U^j?->nv3YDLZ9|l3bJ+SZ~JlUkidbmIY(G3O7(hq_kSAReqhH{X zq&LX|vDO%AQQs4_to6@e^t4zd7aKWgk8OoS=ktIp;Z|NFW7&}(9Ee852+7Pp)F$Ba zp7q6edc791LL_P2>Vgx6VGBla_-bg*+uNW0LwehOc^q))qVFhPtT3%69@Z1CAIN}R zpm}wWf!Z&<=sO?u$^+u?V;plMgTqmr(9QFcB;${Bh)nvaFT~0NvH+9L;*;`jfv~6n`6VlLxUPL z(0s&Y^U2g}E|Rj$=PQw*>YZyt@hB2r&H`S|&dAE6NjmoJ9bIE4gC#Gnj8A1x=Ed|D zqyu(hGLTu)CV(72d8R>w?y8u}e3w!&_7BCTSw-wh;}uEJd;?1d=J97yw^H3oI9?iZ zI5{RN=Kc!FE$jS7?Sl5(M`{*JrRrs(^Qd3T^H%mX z8_&F3{K%h9XR(}l9xb$i;-VyFI&OdckGN<-p%kT7d}Aj0&a^zB{_6_a)&Ae^j+K9n zawnkXzulby_3vE`qG;c{8pb&@${;KZ&)fJcX56v#X;RP~L}$f`LsAJQ zLQDN@ef9D5tHU?1pzm4T8ubd~>W*M2!V}Nuby3=(5aOMD4#zpRUNE+Z9;;-y0VBff z7YW4K%X0RG3<`|+Ra_Fg!VXI$grNoB*mbDwgDN`1s*-A~DE}OHqLdSNMhN2;Bz8Em z+hduEl3!8_=FHrGEM;UT^Y`*iqZUuuAl{>6)>EdsI0-=v2aXiTZfWYzeV)$8_I_P% zb$uX_kERbe6omX9vVeO#ivNf$0$5nh1N$M0vuEk3e;q3IW=AiRRq|;?X%CFdlqaa+ z`@AlC?@dW2+C7BLfUokakZmobLGY=sB6G@mmkH{6o6ValgU!ax$zS)Nx#G8^-1JC* z?bVEPw;yqz<8ZI60gM}$-XPe^#sYu!+n!xGAqhb@nZU$#3qVrAPO?$d0z!XBH&jPa z2*>s%vI0|a7Bo}zv^*w;8WIShyh%^S$I_=kjmC43X=;B86OUAF&iDos62y(Vi=yS` zFd-7g&BV%)KqBQ;Z;mAPC7&pgaOUR(ds7K0%K|<~E@HbK{{$!ylPC@`2QP8ln3i6H zNucZ4B)jX=8(?(Mfrc6513F1wxU&4yZ|am7z6b%G<_T-UvQ8u=Q#kUwCeE}r3-0DWp*5O6L2770<* ziJrY1$N1v{A>Jc3zPFb1i5~P&*DH1ZEkOX^@QIUcoi18O5*-G7XT*Tv?5-5G{rAdF~F z+Rp{C6%P{N2C_c!brMzO)>PW#OttJbi3xd)+hEcfiI0_50!UB@VErOIhSO*ai@ofZ zf3Nej5Jffz*+TCpTy+ru;wXidgdGJKAc{1RaL6J<7?2q88Az&m@uT+z^R}vef>)8} zY(mgK5Vwh^wH`N#dVOv|&s2}4Mo(E!f>R5xhO!6FI^;Op8g{1cHKB8MDp+MYszS=1a{-X4SaR}mHI z+7H5?$~X$9vmib2Nqz?C1Z&B_LDKj5S)u-Yup$A0j7gG&Eh9_N=_HK}mBw?KXQ{`+ zBNUhSxQeNfLH7sB?i%C}CBuO!QttBXgb!zQd!Tc?0BEEr$dD`PbkM-2KvZJ^z}t5o z8yqz2fC+35d6!c5cgi<%Q^^T1OX^!{nBBX@G5NDfpWX|d%^rFK7s)i@hIo8%yzYkElt*_tY1m&EAppK}d4SP8ag^OxBw@R92Pe|2aa z06ROhT#l{AgAho{fjR`5{-xbY!j)OLTa;=`mk%VxN4(NT2OWJbzDwmrJsNB|_c#l- z$CdBbSwqAFMQb%%U#LiJXx=VPR%C|i-M!b5^)Fgg7O@6ktNbdB0Pt{)i$<18tjP?b z{F3;pl?r@THLhl=gOQf1cqp)UgK>%hK)6|ughNY3@KV#tS*}u(;@x_|M7%z>qTl2u zWf+yF1{&Y08idL46lvKM!WWN7$U_T01%I zlxgk(%oo|OW35SPwoOkq@IRxKZBNfdz`&S=bk66VjF1lXA#UmL7JbQ^nOvrIfQc5S zWctVqt@=uby3VsWUXYjF#jKdYr9UV3-EPZkTrC%A+1#IYqG+VdmaibeXbHcMFaJcpC*L@-w#qh>Oz4bfECxO+b6gO9~ zH5wumW<1E!LJ_LQJ_r36f{R*UUB?d=#{Ie2E5}j(z__MQo;-1x4K9`2*ez}bahWi9 zW-m5is)20c+hdZZ9X4r2aP%!Nk@~}r;}LTCw?lVXH#McJ^@jiM@~o@hI^&=ngidI@ zpK&SGhV2o3BhUBSFv3Y+bF1zXWB<8tw=nqMi1)z=1DOYKARrdJ|7}wOTpqHNuT?)e0- zgxA8a<+rro)wq&%G-IQy{6A1;qG+=4e7KMHc5?4g!yQNK*OZh;+)n{fyNq%Q2!E3* zB+)=ai$!!Ll})hk)nn~PB;!M8N>CH6=a8b5%5#;W2$v`) zbny2@btSSx8{N4D?NJL*sJ989us7IC@jmhifdZHu7}Fy~^T`PWbIRebkZ-Rq4Lg{w z_Zynr-4HuETi$s%g;oIz;7SyP@d`cJ2qWZ371}qUkd>-%yd5u(8*AHFfH$;zDVe#! zqo;(R#DNoUUS7V=_VzdSjLfC7Q-3i>72mO#dSe#w7LuLBFn|rpc05)6LhN1MxSdq| zVT?IF>o0BPe!z;%dUQ-ySuVs^DdP|-{V%`Ki? z?`6JvNs5D0v4X*h7{w4O&9dgLEw1f~>uZL!Lf|JD$GpvL-6EEDlSKXHIkS zGAS30tel{9pAldn`B_ZIrx@)X*7e@Je`Frcd#&d~_=BPWV%q1$fx{SnE?iPqJlkw^ zj4dz(G)}PKJmFS347s6#ryojbvmA!TN&JeA&p}v1!Zbj(JiY<9mIs2<1fjYC2&{h= zXT!~94MV;noS2L`r-l}lvm&4=;?3YS_m{mmy2OBfLpMOMP#RkJu3g$=6HkHK1F>RY zdlw4n_1HYCTkLwo8e&1??v6R+^+jH(Y?LqVgocWv^f39-=$sF_(o#+?XWPoKEq5dG+ApOX1_=PBc97qq;3%6Y^nr>yjY z_cp`#PV_}L_n?FC!1}*G-2$L>PM-z&l4%%N?}q_l+Kvhl+|}2q6Q<&68OwQIPVLTgb zneqgL zu+O`DN)E02y}TSDbpmG|{|>0H6c$q&HAYk>lFMo$#PhTO7sHJZOlV;ssdYR48)WmP z4{!5I%8J9iObh!kjs66^{gt7}mj4O}sY3@NA(H4xPZ>4pjeiCO?p#e7JJoa;z4cXc z4o-AOD-aficBfbM%-89Rn#EMOme^l$cWa}uLp6}-H7o7t1phImHrVkrnYy!TvHix310Q`cnuWGsz)%mv`UDG$u5p@pi=fpqc6ES@!08{nbHHn zl5m!B*{?b+@WWf7)^ezOag`6SIuR+A9DZZWCJ-x*dRj^ItPJ1ct4Sb%R(m7rI{UIa z>y%HM#GkEVErw8x#1Eg?2y3q{yC!jdhDs8lF#-fZ-ZX<{2SeJavixW5=UYWp_ipsq zfVxt-4pyo_8SgSZdweXTW~9^w*FzXkq#hLr{?KDPFh%&%!-lcq7S$?%-x#ghteUiY zhO;&G9ClWedjs!t2EWNKQzfX(WADR!G46FCDreEWslnM*>rjQE%8o3iqz|;c?DUaA zh2@D~rpu}ZZa8)UzFol2rZj^*d4^S{epxbPcAhpELmEACXkyj2+zN7yASqPTH;9*LkJeMZLA&uVJPw?=(8;v)#IG>FvuGZs(UFd^?E zo(rYJg&JRg5{;g}`Ewx-vFy1@X!g@JQIfQr@yw0yp>2J>NoS?4*xb$c@Uf`4VU4w+ zY$L?$=h{z$%1)nIwF_4$t}VBrN)u3)?@$8*q)3BV$L=|8iCdiTh4?8(qIjwltwbFg zZmSAjl~Px2>INgnB{#2tCm@w|I^&d-6SnUd@IT(gKN>hVUe~;M-^mnacpxCMlo@$& z41k-7t+R)zor|NZg|UgE$tbNdwVeFpV{Vf# z;@KJ90)SvMMK@kSg673wmIx2HSr@8(0;0C)l0C1;{OLkpqBa>0gJn2N26-m#p__G- z#y!o=`$#5h`xp`kn*Dh=#XwD=>l+5>P+1VWWjnWY$FMf-r_@VNT8l-@M$L&D2ZWpe zFo%~HB|2le5{ZtiQq7tfbcvm;($9|sGbLtGNkH?HD9|^LxZAz1y}lBUcPogdDAVy0 zJVBwnP*(K2)K$bn3h7^15dm&|^Eh6MRoUDXH3ezaYCLmsV#qk>AHn=o0kF-y9sd*o^r9q}&!-a8 zqd#ywXqTSD$99P}cl$z3L#ET^!_T0G13rUJf~Fx>M_GA`&}bVai;8odb`2@<{NiTD z#%UTtm@bm|zM3Q{?`_~S0wHrh`a4hV0!}XBlgJ=2WRLkSm30$^enjKo0cBn4|K7XN zZ{bz9P+((7d0Mq`TfOk{k~cw~5;5jf=9V{82d+7>%EQtEve70mODQ+po=-T4) zSz0%NnoC&}HBVCqn;>hX8hO2=jPggzp{c5fi9bN#*UicfOA<3_oP0x0dT?|TLUV! zOUm>f;rb~dB1v?FZgJZB#U$1(BYKjl zVF^e!))K4Rj6P#^(L2%x21L^u|BV;g_m869byj?7d2(J1RP$aFGy%F7?hGQtr;<^{ zQe{L{B%ib@*A~2In6`MQ1GJI;PNyKbzI7W3eFO`rBBd?(pEB_W~E~+<1#0 z7LIB*5=b2*pbISw@7SUJ0IQ?ByHW7dW-^7C*;j}+gMAu4S_FyCxXC};q)Vv@*(i2+ zX4CBk&VNwa!W_*-MrB5`*7M*}fcg9lls>7ElqWfu!|Z-voE9$y3LsG-9^-|*MZT1V zCj=99(OQz-dK*tvR}o3FHC!b+duWKVXaT2gk z|1l&R%gdx6x}Tnmt!*n=ylZ(irB%j(n??09^pU9vPHQmhH>0@qkp(BYlICsE**)Z} z&S_$hWSsG6jHx&QsVvq8SUokRCaB1ngQA|!r8>w1GUF<_-l1>|)K^^erRk3E|2}q| z%WfaKzxl`eB>zxv6#uU}M>bX43)yf{CGy~+9oR&g8@eojs(plqxW$A&U_SHS)@ zNQHfqH;eG2;BN=8gBybPyr#OEh2$@TFe=gaxTx@VRph}BoN5A9r}R2nn*QsGvT(_` zI257L@V%oq@E^a;$RrtzjxB{e8aVl!xbi&7kj{YH+T4FT_|rQ2qXAU>_8^#|8NCD0 zKx>iC{mmz#6Bj6oO(dt&2MhFp+cXjHlh(}%qkCa3&hbYPLVgD``N!u8vdaW{XTCrj z)xy%K;>ZL#0Q>jYgCj*ADu~b%^<1D%&IIGbZFxw+8U%-Hk2zD82L93Q;sM}%zTVKJ z=UKYBE%AID{&tm}FPGOce{Xs>+7i34b znc2OB#_Ag>Y+s|fEHNR@A`w9{!LquraGyX~cg9G7iGK}yCa}N!gUpSgKB=FxJ z=@2n7Iry09r$1ai5z+*i{i&kZ;_ovI=^zXc#y9Bc>qm*j!oKhMC9|oyQt>l^hp|A@ zM$V81p`WVC9IpWN^=*_+$ulrbAq3qHFC)ZP+c3qVXVOB1NsPbN3P*wk0c23y?J<`n z4AI->f|HVvx{IJ4zn}M?ub;O^IuoOV#dVVOx_(UQ5JQqjVeB)=s~e;JG^;Q?raS(v zFhH$Y7)ZL0d&=8c-DH(H$2@?b`lMh7Q(nGB2IlZ^g4+k+W139A8t!J0kcSxJm6Z?| zj&{M2K*qBL{$`dF>1L3a```YkBhKd_uHh!M1=%Oc4O@~SNA<%ZXOoI=5m&(^Q%Abw zbX>Tx#&s+egHjUpbn{#Di-o#km`MDa4z-Hx&^3hJ5K>^+`=asudC<>TEavi#QXTT z-Q^jD7-BeFu9aSb04*|fk)UjDUGOFr_Y#QNf+$|hR6MBiiZY^!?lTRpEyPejgJ(ig zs$dE5Bv9)1`$O{dvarGx_u$zZX+jNs^Xkx%%q0R?*NfTTQ7zqyK4%r(K883G-@rs1 z$h)#pvc7HX)05y;Sb8&#S(!1Y3hv52EG4VBPz+_ENVl)Vr=Vd(c6X8+ia_Cu zYnXPXw3*Hg$%i1M-v<*nSMCt`BTClNNvbcIJNdV$R;6Cc8FNl*MmV^rQWG4*G6zN| z{GuH|=B0@j;^`y|mc?e(M3|Jt5rNLkIpHv&Hplar;H~crIW_4EVZM4iSGzZ^U^w+Q z#y^}EgY7IdFfwW;tH!spotBU4aF|oWVltFXhMa|UYCM`cX6Ya1WQ;4Bb9t;bhCIBig#I#hlBix#~gzuxcWAgL7N4KYO zGKX*H??+bhrBGDcAVmX|?|J#Ghv#&=)oM+BpiL?<20T}!p!x};m8++*)~voVzO8bG zMfx29d+a5dz#fDO$+F@2{;D^6AkyYFn)<{YnmWl^RLPKVcL{(mr7RMhEjxIvy)?K=)J+aMmAr80qG2alb+jUFfw%d<^HH@-;1cA>$*@kx%T0vA$r#k@3fQuM+|zw_ zD&TykReMw)5khliaco20mMUxlpJkLMC|zoXj4`*dO4MG8XOwt!z7npAE9>W~h=u#qtZ2rp0#C{g`ClJ~VzbPnDH@9GZ4OPDus zW|u|YivqJyql|83HcjVr+#WsLK8M#X7P>3j@atrx)%0|?7zw3d&Mwo*hVo)Rr@Frm zK#70V^DV_83l`%E355YWv@G|R<&gPK?;FHXi9y?bXl5HjLueD^F3ZpZwE2I>Rsxq<|(wPf`WMoL<2j z+8RS(_WZgCTXfRh;?UKL1sZZ_AtbD9nG}nUmAn`E9nHGh#OZY3z-+X9nAky+Eaf1$ z?XF*>bu?I|dhS9MNIRedz?9oqd7v$zDl9qY7TVC(!yD)APUZ6^kPMHc(HrOeB8>K9 zajbC?dE}G%;WKeVNMdg|kHInHnaT+A%&FV6El90HPTAb_$f$E#UUP9?iJgiXK{twI zuM|L#I51(Z>gRS394HFKwB;-+M)rXw$+|O*`?eOUeu?yKvRzj`f00U|Bbu-nM1o(-_GNJoaKq^iYv{Ry&rDpH+!&~qU-9ooS9Kkm5 zoW%^s0aFj}zT$@s>UrOly`SF!(Z2L}tWRAFB#XsytG}HFWnNLEc!<2Vu#nP^QF?5@ zG@B&@U|wu^3v-V`Km?&Y@nBq>vI@n#nvnhca3B)7hxj=Rrb`VGs=fj~Oyu0Wi~oo) zRxMuq>hGqo-f$$PoUm(X_P|s3iEiJ3`$nyyJ{9{Tdh%0dQBow$waE0+BRdw%fN9aD z4oeo`{!kj4HwfH{AKAHx%6Ub_{_ye+9V-bOKZH0X+FaYL0a$Jk{7U0PdMx*Y3UMHa ztt8vybv$3Mz4j$!!E}RGIB-vpqD)mCBuH4?4zh3VHpH&izqZe-e3DGv5Ukk0nG1N_yws-f)yp>C73zbIk`Pu-RDW>f=`JcQj}Ou5iaBHXb+aAouPRk z+e8EVUbjyY{yhC|@a=OJn*Mo&jf2b0w+isFXIE@xHV`h$A>5^rXz5jfn{<=0MI1y- zDaggx!Tw#EtH_up+5xpu0oCFW6!(J}dv@cIA#-&pA7FS7K?~G)*V(OgowE zs%q$xaZ0;MGtoF(XA{yM>Si6mC9G`Kku-_!8ZY18%* z)3MW_Q{YClF~KRI6jZ7DoYU_pY^`NO$;#-iey5;C97*)=L;aS`kcDV#t>W7kXn>(4 zoPn~6;b$RfY=kX9v(kU}(hkJdO;Cw5lM=Sb3veT+Xzq?a)!qC$z7%|&bVx+ok${yX zeM(bo%{h;*jAg;Tv2gtu0oJ$=BX-^vA^+x9$u>}&meq%WQa_j0@T1_uRFIN_71?9I zur;2r0G3JYASQ$7t+Sln`FhUvyi{O$}pjs z0RJ&eJG4THR78tT)%|X&Q)QHi{xBr-V;E_&rxu}Y+L@=!Kmo?@t zZB2fROIi6&!`}7QN3`fK1;T_vaW5TN#7q13sW-6ix`tF**k1q4@y^c9pqe|I`P49g zhqvQ%DPm2HPLu(9#v=bKQSXw&3ms<*J7eq4{Iqq55AWvqLgs#y$q)_ilb4UlumOce zcubyl5I8WWS1sh|ve&yiB;`(#{zW61rvO8FJl9rZk`~DUF0gDgLeU8Ih z5w5dXNW<5RJxZ)mU@u@JV8oB9WW^eg2U+KFmoDO5xBdsaCSb(2#j~C*O!w+SX8H2d zodc4L6%u?391)%bVG+tgK5%^Sjq7cXCqlS)*^JnpRRf%`H4>xmFl>CT1cD^wK3@W~ zm5eybC>-3TEHsS%DD4Lhr4U?ymN}#DMYZdYb>mRq$B5<8gu5AIF7lviHT)xhi#j|L z^L3;b3-BZZ`(=nh&3gkQk|}g}n+chREn|*eBtj^WS|3V+#7z_FOV`Y4kEj)=4;%cK zT0eETO8>?ZsF1Xd8F9RT#^*Vlm;xnn+uRX}u~`@s;l42_{7YnHdZMkzjmltj+hc#i(K3nS12xO7AA8ulJ(??|Zxb7%TJ= zjT4O~R-#17(Du^h$v!w``Y?1zqkB6PsAa;$#|yH1dLc)eU}&&kBL|o_KEJ!4AvFVl z)lu}y?6!%`Cr-#FA><&^_ti}6)|YZ(8j`*ZOV}IaHUncQ0|+Cy7d-tNw;!hC?N#F( zD#QIA`|JJ_!3#W5(2LT5v=%W0Wo%+~{5d&lkLU_K^a%~#4&`SY2Ui_+m!)XStNYt1 zBQ29K+67I1)*OWU3Wc!{zjnl`rG<8inPLSLbIj)6@=0Sf=tbi><6P>G@I@S~sBopb zrSjiOt|xG6pkdIQPEVliRJd zGO@AR^!D`nDxJTt1wrR%{s*asAo0EaH?fCtA&Zo_(=yB|zDiRz_p|YE@gbRo5>$kp zSw+a6bM|8jKQbM8jC+iF{=kGJp=5^i8r#1jc}=Y)`DUj8h-ddZKZ;J_gAy$makxMZ zdR6u6--->zP`HMy5^aTS%#p+pyU8roGHs7U82{R!{r)vrs;^04?+D5Zcfi`~${kpd zW&5;N_wi^B3bV!8dDqMdEz(t%*_52Yjxg=j$6|bn^R|8u(7eRHA*LdZJC3YNI}_X4v2EM7ZQGnUnb?{nC(rxfJ?H)E zoUeA>|8)1RUAwAR_qx|w*Y)EFtRrqRN5{bUbsPLwxzgy`#M2hXs&1vHHs!|kKdDF87VwQ`dxq5RW4{4Hqs1;pFI1R>JJJ9`3V=`0gF+WMDi${o zb2E&nXs6cR>Iv+*gNt^cc zH-TgUUmiJglA$$qhYUbVS)Fqhc(3wC!A5=gPKiD-+nB8RYLN1 znXTKCFkM>Za>d%40{nC+jLwJ(0I8*-$1!_Gdw)wz*9qw`A{HjBx}0{@4BF|~q;=9V z^~z%2aTS5JdnoKen<<(*clB1E#i)T)S)GLxgx*XxRq&Yoqv2Q4xZu%q=@iJ5SMOGK z&a*Ep^`JhedIgM^CJYygP-lXzmw`=W3#t9= zV;&)4f!np=bpaK6WEUNa^5`x-nz2Z186Rv8R`iQhm+$zp6{785mLeY?e?Y??E2j&m z><*QE0dJ&5e>Vmg1R=rhr!zLATiX|#{3N+^li7pGca9N+gP*JAo%w%Sa;06Ix301y z<9+gVRp(Tz`1#fJ;M~oc4z>DyPtq!U><0YmUU*s@DmeXtxajkmw zaWm1#qM0!#zxFKKqms0MgQxQ(N$?%uG?{-V^?6h?-~a4(gx~tRYN--!s%RfBya{hS zk3U8x=^J#JZTQS$`#_B?qOLCRE~e&*x00jbE_-OF34r_qoYw-R9{WbcgWav?mAnKL z2rQ!Z?)rykuIyJc&A}Sc2KkM!+e2E^Y?F5NauCFTARz*mKTVhMrp_TCF7v zW>F{mb1Pda5+~d!+_cA}(AbA5wgeuriCe-)CM#Xar!jGYmAP-lM~Zq~UsAw4$#%v` zlz0)y8DLD~falH7MX_WxT@iL5-uVZ6V#5wQ`9co*+jJ0Bxj9^Z(@Mqd?U5RBV&w~);kq;0v!0DcXH=!olDDj8!e^wXS!L7d z`ffWUZCP7)=h1bMJ>oJMnLeEnqk(0O!_1&_8MQ{Qe z-aL0~usgnGe`8Spl|KPo9PJ#P|9?7KK5E}JS2iS{6ZO1$GzHZ3j`jM=@;{PBtc8|j zvUr^IEmOe5#c+^aU_jK|*?-k{-;H&Viex6LUJ2rd*0&ow&DFUG&RGt}zv0YycsX40 zGRFJwiZxEqJ@W2=tYW1^p1m+oeS7!>=p&81R=EQXS*j(X@P*gz6zghbO(HlF38HL~7QF@7QuoK>#?(z!AbAgg%~e?3s-CV`D)$Ob3lQxH$2m^>ect7FQXtbHQ9tW6IwN^{rUE zqwHdZ4y>5~SkbWvqvEWE`)F6u(9wqfh{Z<9(wi9kSxE9k!V%4~smA!r~rqWIvRiO%eA@oF{-x*wIL!Qtt8yH^ce zce1woD=_v40&*MMFQb;qlj-(P1eH`BR1J;9qa1``C~uWvz6> z&&3FGc0s%4?Sa}#QxRRj^6Lf z4UlL$G>EEIi#3%Z?e~e-7+n<0y@iX^#$*9E5XHsh6x)GllKz^)s%eGXIOhl75Dc#= z8@G6k1J-TMv#wL>)^%ByWHACcxk zirMNf_d(Dc=n5=NFeM`S2btI;@e}g=Ius?4 z@HB<=I%bq7>(LTlUOSp1sU69J2+3oHQ??P(g>n3fwX?ji`OfJq?YYd;a$as7Fkj!j zd2Zdv={m=gVj34jx73mV_SY`%;#yfB=h2`+)$nQc=^lL7<@yVmlyoS`tvUGm@BcvH zxHsSeKROkI>LiN$zPCavPuPPIG|w z(j+*Z6gG?`#cS%w;(o2ZwWr!u4l)(pOeku@3Fpf6Fvp9{gDD(e)|N%fPo3yqz5Xly zC;mpL5_Rbk4Z+ML7_UU1q zTx_ReskrCQQ$-C`!?*;$I)y+ZEMZrXsCru83rZgrD!HNSbMmtQSeY`GQ9w9LdcL9z zDXc?*0trcni89q=LrqEg@dG&CL%N)4#1YD)R+-n_S%Gb@SAdv4)rhZ2EIM$;sK0z-DSA;-^yIWcq^7fKQ2vRPrt_ zFE2%*f#TV=-@@%2P+oJ4XlZZC9^izyRtlw}$Eu#8b{yyloP^85&eUr;^ zvWH8@UKo3oku&XoFG-R?_Ld1BS=N78a<=n#yK9^GJ|j`PR5b{qy^Pz_4WRi4Vpln5 z16Bi3D3qjJ%+T~N-ceq*taVrO4{A|ry7K&weNN{1Hf@qdT4~Bz6=^Oot1i1?2wCZy zW2d#9`wUi3Pmg5NskAB-+5Ry4P!uzRb@sNOEQ6eKC=;2N+l~3*HFeBE@YjX0p?0th zQTC$qv}pd?d@pd*m~%CcCQT8uOXvxnFZ68c)VhN0c&yzLkn4`_lb&B9`8x{OTTr%>r~;f}P=JJs@z8 zj%Ld4z|eB&IhHshHIf9a_phBjeC|^EF_>KRtgLcipQRLK%}0{KMBX7~6wF7?^4*$}FVbcj{Z}Qz~K<*6rNIi1+OY z=%j6CG~*Wri*e42`vS&};If}_l7|bC z#bIL-U`fP!Ks&_N_GuF4aZ*lQY?!7%2BgCj5M zwvu4z{ESYvx3v*=*=BP-6Op+Eb!)eO`-u&>|LNVwTQ`J3}aaWI73B zce2$tWA||vy#l?&cY`9{yx0&%@Tel1%>zu308kzOpWWmz;wKM_?=)vR^*04LZmK-{ z|FcSztU4X@o#6DGQ?8*=lns#=ASkP8u*im z&Ku|Em+C#o5%d$CF^}0T<$uz6Yy<6ylJ%zB@gbOx>=MO;MNFEo3Bsa2{p843V=Q3N z0i*^0NFu^2mBML~AX$UPmLz70WGZEO06`z6DzBbNP{^){GV@pLXs9EjWNwCbK&rZn zqH{)*%q@{IFK7jw+dmRADLH9lT^|^uICo?PmTy+u*x-^ws;3d2^=anf;wHt@yehgW zm<6~yKBe(_y@BzHV9!QNk_Q5FrqiTO0?JQvbhLKM(fK8apMD9+`SPXwosZOq#CX=x zQOe5wbVS&xjm*}?bUuKtSci#$AHFfTct0pKWEkp>mYzbao^;3E;fH$)sD~Q;{D2f@ zz`cwe+S$9Ya7Kz6Xo(DZSD*t0jmi8?Iz+oZBLPmQwgNqR*3V{C6dp8u*LyF24(MG0 zcn97AR(ema?*NKFtG}lBYj&%43;qiGMz7f2J-@>H)w*6zWH_)TJ->$VBe?KNJ;v;KoJJo{&uHJPAALNHHR$5Hwrr#Es1YIB}7zPFP&E z?8`+B@{-I72-4ZJL(4{F zY9a^4GJY<9nlDPy+}*Y*KYgid_4Twn9J<9>nO*I6k%NQG9nO6s_J65N$>Q3SKD04-m?XOMPyhg;0J6&Shd)fN z-88|9qBlUD^iOnMQx@q7DR~9K6Cyk7>(zm2(`i5O)!nekXW&3X@dhUYWf>*GJ)$+) z8hn~!1!qj><6QJ=w`%-;^=$7~&2*O@r7r#Q3J%&P!9U2F0Y4Bz{aYv%B_Z?mSCy&? zE=7oIVgs}4jbZ;Sf5D+w5iosAyFjBV`4l{1Iclpa*Gf>O_`z|Bw5Nuao}a5iM3xP? zDg&~FcMZlborc(Kf>r?m$>ij3RK{cGRe&BG#N_{~bT~bQQJ>48X|3C)I;DhCzjgvw zO=h9GIw@S1`Vpz8t_SZMx;-=Hza#C6@O#@w<%8Q=LN$$zIKzhVEmBXKn~wJ`bjjwDv6LFFIof6Uk=s~LXV(;PviHunJ{(D0sU(@%kOOx3`;0Sc`KL)cr8-DrKb@V~F6UD68?1#! zT1-bOg1o0mSVU$zW86<5)ea%4eB=Rm3ElaW#EDoqy)znJOD6O#BBG8kfG+6~H61cahX{Elr^@PZG z`IDuGjgk!CY0%&SY7qo9=6laen5CNd#Ih+bYNcmUZ@7s;_o z7c#OUVT)|2g%FP_JQiN>7dm%aNf#wonDvDa^oy1qwzH%@rDnH+~2XQ|MqkquH<&Lk)fI!u%pcOkZs=-$_y4c*r z=c+fG_ac9H?K(H~dG~K9Z{av=NL4v!Z@|p#{>CphyAV9nmQ^aw+M_N}I_fDKt*S-M z#e&3HyVH8zVKrGmi?FTDX=m9pYR-VjCBiMezzpai&rPT89p*N^cgh_^VaHvReFik) z7AAtw`5SnBUA)VDc8*ARKKG8D;f?-W`>q?4cM|KECGnvdb z9$)_i|Dgf>yAKuA2ZM9@4Xn9GNj0Q`!b7&R`1fP!U!%YOK-ZuFHowU=HTwRN-I3$7wm!DmZT z76H3)DGDVM@%w4$Wp&cpb+vdap_m9!R~VV2%HYI zS&x>*q+EOSh-8ZEgYjp`Ba-WVhBkif{~dfM&$t)9o(`A?47! zg0ShT&pm$i`7pzWT)mo-yadj8j<&Jd*x>cVj1K)c=(o<=miIM0>&#!Yv65IHv%p03 zWXKsvLn!3PdGcIjj0_z-IJ-5#ohIr4J-|%yyOkhryHw_!j#}7w`mrX}SLn}W>Dy(e z=9KN1-rGM0xbG|`)1N=pi)V%g3l(vNbo^N}hAN0PL-=s_xcp35@HEb-5P#TyOvGGZ zp0Tu`+W>+hG_VI8R#6?g!j&e9Py9mP>@ESSuV zBaSB?5?`u9Fn$?@>5c@Z07X$`l8#CFNayZi21%^|03&uMMLLZsDLPi4ku!H;1ujx( znQ1)WaPIuXaZ_ zm+qZhpWXumlA7>Zup)5m#a`hMQVVwuvVYyb<76GUkg_{4mf=1vCO&?2&v`&>kP&ZD z@~5Q~U{o=-VTYsy5SiXwncFYZ$)r>rwU!(|U^Y|}m6jaeO}#lPpmX7k)bLrxj~{i~ zCLS7iX26gQM;HS!dJu=;d7&Is>foE!FLlYPPH-)y{n3B(Q}WB54Lho&d!7B@{FEbw z--jlbF;J2taL=A4J%|N&D9{}nafBE1$$%{#U^B>+Z__oqh=e)VfV3Y@h9({E|Dru! zi}w+A*o$Pw-RGP18$w)g?$~!&}xFNW3EY<*Lw79SOuq1AcG3S#6ejoYrxlr+E zAxg}fHN!>hK-iPn;J5`t&dghGfq#DAVm|yV8#BzgDLjJ#6F$knj2A>tMt9fq8YVUC%%lkYb?@Sf-MNBjF1z||w1jsJ@IhZ>A1%*27xcR2qHIlyl%P1onM^#mQ>AJ4&6f% zTzZ`l#S^lO+L1CKI>Jhjycsaf#9DH%IrhW)jhYY+2tRoe;^MtPM7i{&;O~FiAaO2f%u9&t*mo(ioVb zg)D8q`0v#?H*5XC@0l0ApNz5Fuh`OE4Pde_yFoq>) zbB8_I&CGL|9OP9)L}AEBZksWxx0gA-tzES*ybvY#!U<8VUk=-4am{aq(gxVDsNL4> zXMX|zr`-VlPi~DS2^7`FPssR-g#s6)pJ6prXX_4#4 z=Z=0p^rA}xNlPM{MI%lJ_{0L90j8FxIXOK3uo|{vudbxr=H?|}*Xb~IEJnD!^=DuF z%)5uPb4&_Rc-RRob29X?N07KB5!$%X6*=&|P)%B1{?;Zn8yI!(Rl%H@6oA1jH-yHh zzQgajyPFiI>4PL9p)JYv2mLpQleDZBMNxr3Qc6{FVVn3SwbmmYO1S3+?48$G>G9c< zRKCQW;+!UVOPLVGzsbwXSE86C)jB&X+tq5q3w3(w%=zJqyk}O46q+JQbg;R zc26hIm(zXU(eLgEB%Z}Cn7R0E|@c%4**wZ^VP?z_2^5m>;&pg1%y20Kr2Tb&wjxR zDA4WGl)=vDGvU48$>VqB_w7^++9`P2oPD9yc=&J0cbuh1X?J z8y6LQHh@RFbrh*C4oHd~$%c;{24>ak^8s(+Nvr8s^Lx6SE2dn-YtU5moLf6Hu}qum zgDo?%n1>?m!o_pe8c!3*Ks>cg6mUTQ1$`ol874KxJu~($!eSXHqcEI^IVNtriXVgh z-pZpuy@rb)y*08DaeJOT!24WR{~Seu-+xx5Sb=QkE>>nhBCJUT0Z#CQ%0b%m1{ohE zYEj%i}_F^!iFZ=p+rVW75=XSP? z$bM;vq9FkPecp!$AG`67f7B`pHHHBtn5b|7S3WalhlK4Ywqs;5h64xxN*@&B-8aYb zDm4XsZt<`XlDI&Sx9Z+5f{W+Sn)C^dl%>MyS4se&;y^O%gJn%q$Eh(jz{1zs7x3^gY~OdyS1abVos*IiqAi7{%oLuP5n2mc2S(Pg1_hGgm&#(*(AiU&mCvDChtVp zWBDU`2i?pHPY)UNpTGjo!F@5IG$hW)RzMn^P)M-)q4x#3j&vP&R!?Y1tc}dcbz%RvU)K|etHUgd#MU z{+oIt(Db6Bfcq9?*2aft(;o6_4_=YkvEhjEzf8ky4}-(Q7)k?TPm&;!0cGz=lCpuG zAU!%v)>4up#ywzD6B#lR->|u<1cfdiSKz-ZSu&+2EbB12l6qY18Bfn2+`PZ=R)8|NC}>^yQ~Z|cK|%vh6vAwCEzK$V4`g;%t+9f)+De_tx+r-e}cWW zq1Eky1wBe@u*D^KL>*gkUL@D**x6xcWj+G zhM|cO0k81`zYxRKij^uoUKSNfe`WBC&6jD6$HHp(hdK&_>8k%V`MYig_!hxDzjQ)zq`sRtH-iCsn+-AU4WHbia?MG6U}R4m_3@Sm!i3pj>*j z#9|%m)DvlFs>L&Jg}qKMq#-Bx0~IGVgYPsl8Mag1bysC+K^Jxr1ZqprJF_q6McKz5 z@kv_kQUA2O9_jYS3ibh^Np7(Ab%o9eo`ZcTm9PCKB22AVpT!xkjtU(I7f%>hW{eqG zH$*;6a66uf6ay58_weA0&YoGWpg25IS0nuz3hpzdz3NsWp}I}9|7DqxM%5ECj$w7u zbi_%3F7y1%m)X&MY^}Yf=!dt2#Sxn@jCij%OhK-Q@FONk7HdH!(eK` z_QWwFe3I!-7tIge1COxIMp9IjjKBW{YC0zQ`KZ0?GP1&lZ#`8+313FS0jinVymaRz zQNGk?u%mI^;mH`$1~bv6)O2*LY*P&fC}Y3 zgAyo|Mjwz}wE@l2{u`;_XLNh9_Z~?8pl~7mwwbMm7eo7YE)PeV^P9~8=E6h(7@wl9 zb{-3Rpy|0S*(sa7g&q?+RCL<6w$xoS$z=E|lR#D8TrY^TKk}x$6v>eD`Zt)aOQ(AO z{f_Ev{abTraGY6vuMi4my2NebX=<0A4bX~d)g_?4q1#WLKBlC>yP7dW(^QrIoqRp1 zX`(^R*4N~JEiCXEz)=9 zQ}}ywg*)l6GqVK#tfkd`R} zM9~Z*LV1V)IDQ?t2ioV7U4a|0pELCIdSKVPx&_KZ&FM+)yT8uNKaJ|!7&Fc9%d>XV zELXTZ3(TfVWnbFgvg1#PCr@K@S(|^Q@BIdNy2DFHP2_uiYIc{OKtYdF%7x@Q{weej zYpK%eH=Y)syg}Mj@jq{K60=yj)9Ku`nLgzyE*ESkWTJx4U4_-v2?Q;Zo}rC$&aq(U{(9uqk6YEPO8iim5}X`rDMj*F4cMsOidli^Yv zbsbb$4LxBFb%z&idy=J?eN~S?bb8* z>4%0+1Lp_u$1srHddl*7M>WkXX%B1Cau^e~ykIyBqwUG}Y#M5k@aEz}DVnNio4Ar9 zPp`U?U2RRsN$uZ;ZN-PjNTN`P+Fs!roddsyjqV)bw>j#3;exVjgV}Srj+AA<)d9YP z9o? z8b)KVZyH#m{H2DIS4~g{4{A!r5F6dY<$^H63dAF=Ag*fQEJQKzibG%s#h3@;P}l>! zLUZ(VJMen&kbIudLJ%ckXc7tl6-HWWKR?Qjnsna}j5I!vysq~)tKj^_82imj@$Q;! zm#&_J1-Voun1nC%JKw&Pb*F6C%}4w)>+7$w3x~qLge*e9r<@2DF68sz(S@jBOf}bJ ze<)`^{gB(VC>pUyG(wou=Fn}y11o-`n~amcP&BCQ%C%e}FwW+4tJw7cv|&%GSX;F# zbhYgD3zV8-hOuVu**Wq{kMw%;P=Qxj;PGlHY);xUz}Hu94O>N_N#P3lYj=C*Goq7) zm&ZUbsrQMiv3pPI=SHklk{rg=^2Kl(8#Tb<zUzS+f+`vd16Y`Sy+kxYxs$ zx3n=~Qp`|D-wBsd&B{$I1)rl#?SF%1Cg!9m=X|>^BqvH4be=|R(sgC<20>nR8l-Ur z=|muT>W13`AXVf6J`GnNoufF(>$}0yvlEyqCxm&?QjmSeI0&lne=7ub`SFnS78`NYpd~To8%k7=BZF7oLWcKahIl0WJdl|4| zUmLW@U%|9jP^+PREsBiq-r;^KFb^nhs)ra9;(xCC zMr}3y3&ABW4aNHJ-V$(S*oEJ6izBVHw@DM zWW3)#a-1iZ47gRsY!&>0}igD zN$9RF()JLC|6=LV+ddq-dp*yZ@F`ec(4{%zpu5^RW;>xZFoTBs^@9G@Wzo|=-8!4) zvtA!L_l$dG*zGe{#P4bvQj2&c$cf9ukM{RHk2GBYfaT^hi!1vSEZYT%ROKEk#}`bPlz zc)7jJBTI1bw9!|cK;LCz9W-V`a?WUQOsi7_`b~XeTWzB%R$r|g=JTV9xU1HE!W#Mq zDgsjI`Bxg}Z{jWp!_$9)GGP9@4V3yv5sK|Uw~rn?G)}9K64VmNKkrOzRVdznpKR4r zg-QiQXl|kx>u0((0{yJ*aQ_z6|N3}6EH~e=CiHx~T<$I+fU4f$m7?8e8UxxLP z4jR}Sf*#?15sW2jMhmBYh=m62qYqfp3*RKua(Jo6eUc}z zgoK%Dj*&J9UefHU;uJ{$Vl)R#kmk_>13tj*j@VCI8u=ng^qUDtrHFlw!=~ZZEPumJ zINN^!7wH>Ly_-9Sr(Gs{Uc4Q4eWmNd&x|9-rXPUUWttBJj&tJ6)BjfI7u>fw4uhs4Wzn=ni%k!9p_wFv< zNj(925)6)$#3{%AG*qb@#+J`UbAPh+9^Wpvw_SVPTsExW>1fRJe?sC_^TTj|j^5-Q zT)#kGcF#P~U9=*!xOud(-*MYmtg3>Mg@O;Lm$exfiTJZUA?A{z;5T=mn{!v9kg9-b zJxNB5mkxXd*OGVuJi#;3ZYlN(;PeCB)RPCcaXa`MZ{IUUqzAhuiT&aXDsRI4DH*2; zVekUVvy!#=O{vnM7`C-88q%l%0YA$|SgEqgi?0MkYN`VTPmNO1J#0PbQ*cU9;1}9c zMXT#W=jS$hTp^E(U~{EC=@3EKfbso`R)B=!2xw8&!7~Q{6bHs-1uzSiD8)Pm%)p}D z2%2*hXoSxm5Wui)`^l~dIz~z)QG4-p%i>z1Mk?RvjGZkT1AaR=n<8eXLjy$2M3Ky< zA83tX{GvqawF?R}-P$D2q7{BC(97;>KDYWLqERYchCP}NA|Xy7a@~`-C};_a>uWlDby5E<@(j=rmbrZJ)k>f=6iZk#Te%YARXVB zX0n^?wT`-TUa6l^-kM5O&wN373wZr!^YuT8e=4;O6z6~9%1Q^S z<)8XLAgYZZhVQuQhD^N$`PTpaBd${A^`T(?bFG0sl+?fIiZw?69k{LMMo?40|BTsA zlmD(&r!usGptnMsLM8s|OL-RmeX@1k0t)J%KYVlRdH(tRs_{lj%@>Bk1DHDgJCgq| zK2Xi-Hs2&1q|Yn;Z_+jiYfBc3?go}*6bSSjkd0!M<`bbD_(p+E4H~6FQnu}PO*_7T zM5k=l1taWoixtV88^%kv8%!$na{`CVpOsENMo`qU{L;y@S%;5>!Gd4oQx+++zg5qNf?ksF*z6U;r-?K0Ob+TSgRPY><#{0?Z2O2qCLD(p5sNc^)$7cMx#IiZH7#Fm79y) zf+-M@)*bpLIdmcKvnOGZgq2g*6AA7$th<8|Hy5y{6v6Y@eYaN0dCp~X%LR^0KuDe3 zE#)k1MyZDqN8OjS9!1j+DFHevpb(i+hRz1N9%aC(FNm1}IGnLliFkO+8u_q%@`mI0 z(RcIfVW+4@bhZOAE!#tvQx-eXQ2!W|;Q(na&z$|(Y+(#Vo*{JOF#ogkFls@o0|)zU z*#Yf=>6h^Cdrq2qGNdG)+D{ryu+^cuNd(SdSdv$hz=`TnW#xiMC;sO6t@fV~1VRwv zz)Z##^3mr7G=+MPP6{4{9c08Q1Zy6p({4#jil>}*wrw$CqHRy#_BppmrE8?bGoAPz z`CwVM7F00RY;OG!MQE6#WlQ}}nCot%}eHNtAi37<6pfQbSB25mJony3;%3WwFnyrzcO zwJ7=G{maqe*V^yl3#eUR-;ETc#9zpD7C#%Imlit7Og+d^CQgV>v=;a1#ba?e@uE-< zzHU+T5t<)viGg}KUgU3j-q_vsdCB_3zrOmKAJ;STpO!9N5OFfp<}U99&Jiqq{zTz+ zP`r*r129(xlBjom!QoS6zGZ^2(~c~dzbDk4Lp^@tvB@SwGaPqyPZe3wvl$O}unOQo z1(}+3;mq~RQEcS@j8^{`Gm;%E5xqsX8p0Z!+eG8U+G||dzc_?}NNKSU;AZ|Jfb#v_ z?b0eobTOZR!pm-FyKNY8+#ZzOY%euAAV<#_3iwr4$WXS8kP+_~?6#^p+G(SX&Ia}z z(XzM_faNT#*5F#5tu0Uoktsn`*>%Ykga!heyhZj`Wx2RKg^7Dx$gN<@-!K4F9d3do zkmOA};5TrPkwj+Y=^5h*IG!w*4SJ>|CbVI71f%h`#<{pBd1YZEYLr?6jokZZ*==wA ztH9hB?D;^JfTicOJ!C6<@yaL?7v^65_1m_taMYrzrPeI%b6@p(-t)g%DBmcQZEkWg zADrs=obShIc`D)WZw&1m9}M(AQtkYODwTh%|IeJCrrmc1$9J`spleL(mo=x{1%5zw zo?!PTkY!!iV%H&(MR-HF0;I%*TL+QIf-KfB^=CJOr5vYjm8%v;YlI2M0F$SJUxgGH8}l-d#V}lo6RvZhSS< zF7*f+o)Vge(8G^(9I=wK0SLmfc>7NVPmw63HyE@5h_h_5qbsD#A~H)#G1f0WKW z9p2iQHSOG(8Q$uA`)dl#fBI7XwPb9Tl}`8Vey#wufm>Wr zZt3jo&GgE#4!08I$Vfnmj`X+R!urXI6^-ryd?_`rY9%KT#58Yd0ck=1})%96?w#Y(z==y7y%KJ=*cdGtCEh;NkK z|2j4>HgOy!H;O-M+!r=yAW+G{n}rK2I!0WVt?S!!y{u#Yw1}*S1%x!mqQW_=aR@*J zT)>!M1p-8!)O|>aC=tdZ$8ax!fGmyl;|aN_(l5f(IfMsWKni{RmWbwq6;}fgF=UV4I?=0ii$LFAZuLyjRE3Vx~A)p&(pig%Fm#^PtYki%NYgCV0*XJs^lK}@Sn?qGm!zuu z3X_qkABSfA$?BDNwJE@59wEUgP(qazQl@<2j9O+tYCPR?g)RjJ{h`0VLz9b|sCwi3 z3E|uev{WwFTKilC_eJ2nABt0YYmllvE15y%j0E{b9~qZ7Z;J>aW4Z z+qn7rcN)wBmYU5^mk8TrK4${7AE~0u^MPmL2@YV8TsCsdbRT%Mhn%E6B>fj5=J0hV zAReBd>|1?R@>lrsKM}wI&*r>+8rOSsS1xp$>WQ)*2#Zr&lqTCo0K^mCpBp4P{eulB zJ%+68e$I%k&*|WaHrv^@*;8{$&Ob*#~<|K*h zW{0DnO1_@2;NSDLFCpHx@m4$w%L)D-v(3GnYf*&8G${G@GG13+ucjv6H4Z95Ze5za zO|ur=u4=GipMw@T+eO^T?k9`1M^{l4eR!8682lgrPB-eHSUv{%peu6l!wQUHSGDjK zs^0&Z)3bfv#Kj7(iDT8Kx@j?3!n@yI?xquBShT&@-)nHSvn~M*(HxL{r_zks&P}Tz zi-K)l6sX{!j$opk&Tt8->MG@c(b8x2KlN3eucbNz*g!yp2LH6EptOgA|4(+xYY(-B zjQ}1;Dn<{Q@T2%UlO=^tWi$Z6L3g#Zv9~t;cT$NxSfTR0QonbUH~?)L5*IuzS6o28 zWu1jLR9$G^%vFAkpu+x`89}&S#D>W?NzqNjN5eH)*n@G{<37Y2oA(Xl8z$Aboq$Hx zlg3@IMrlYxCzJ2bNVFKZ5Q3I2f?FqoJ;yVSSBenC6M9zUu`oB4vltXG59FLI0F&;~ z=Yi@iX>zJkY*DnJ0x*@$?xazxG%xfpNvc6^VqhA_37Uda&M>6{9d#%OI^lc`sRz4K z+mY<(b%u)RMDNtC{vuc%sA9@(Gbp?spUe9ZTS zGOh3g12(_`r`ua!WW(1uzQ~Xmk(cKbm|d@|mxI4P>cl3Z0X{UNR@~H~+NVRhDB4Jq zc#|T6Jn-U+uQDP=C}6<)Qv^YpNHQn=M??|Z{gm=lHBvc@Q#ByI9$0>uv10p7KN9D? zc_K=5XkOe~IOG${P*9ne(!4twsc57YzS=P|p=U{pGx5oM6p3X)OucnYIMevTC|KB) zOvA7tebC;C0PxIo)!x`Cm(+#5JAY+=B6cz_v>q7qZgV|}3&^BF+N3{Mh{lK+Gj&TG%l@tg)hZiGIa_pe2GZPl$9ZR&cl%XZ0)wRLB{nX|S1W17AOE z-WXpc#L`}KLZhhQp!}hfM#H#(9su3-cPr?x-_I-N0;p0dL)2_u2ZlX*Ab%OQNQLuFm5(@ATiFjWoUYd&&D@_MU&l`F7m$|E8-j z0^L_@Q+lc?dHkiUHuwzUxL7;lkcr3Yi8hwIkA41zh9m0k11?Qm2r@T_fPL4+7BlVL zewjB916UUn0`pjwuAc&vN1=D-ZHi5u#Q@|7#+}O#UY@HW?x=er`eR{dvDJ&& zne!9aJ-fyN`6Qyf8M*F{sOx#nvyQOx3d9xi%VX1L=KcThuVIngfGPaWacJTHYpa+V z5&PfU(|?p7Q33Mj-v+_o6`y<;IkDuHxgT2aRBTk$IG`+gY|tGPvN|`U^~9U`b(Npb zc%zaTMf4roy+|>+_gM$`e}aD_J8p{>pa|+<%u^f-;Tl zvyOJLi#b-?g2|k{@kO(atd(1SCnA#a=sUy{W{J!zqyR2xDWG-AMSfE*Sg`z^OGM#S z5-UNi6f%g#hVs2S7+!u@@Oe3a$tLvIPmVZpU$WIcn0IXVcD=aerr-~xzH~#{`IHE} zKRL>ej(++$yuwH8E%`e8DJK#pK86GwyTUeczh}qJ4)}Drn;e9+t-e*9TYV`UzBLdG z=%050>;UkY;P+l7WcDEOs9EI71=}PRcL&RflzfA6Sz>9e_md99|ABonSvN6xUb9_HdmI5d?}w zqWP2C_K@-m9V}%8y^b_}bO)AF0a(A`L2KQ=xtM@~i{|uy@%2v8kwtyiZ*1E(IyO7D zosMlA6+7wJww;b`+qTuQPaeJBGv0H)bFpt~)Tps9YOTHYf6n=v+Jh;ZR1(Bw1dL}G z4yJDsEtPiX3aeYj~J!aq`{S~c~zG|CCE#q8um13 z8BMj{(VnvTTz4njQNhOAR27q&88ykoH+kV`&^Lg}EA289c;+|}Mg|g|i36Q>2>C!B za`qWwAJXb+)MA)g3`t&4GbINdVFr{w6aFV ziPl%+tT{}S33@_GeNs>t0)cFGssqEd}^`p9t-O6Z$>XVF%S^WKeQ5TfYpBvEJ!r9D*w3t*Be|D z_Ik|v(1TC6VOzEA+>)iFB-)@2nt=grUEIT(MoqK1I^ z#<|e^6C?jF9=T{vjyKFgy_1ytiP(GzsdhEI#38MN2`;m#%(t}GAPK-uP&H=eRW9e5 zT@(8&D;~-C*|4HaxCyZxCyYhVUJodz;ft;a)#K`r828W7_e)^dz-X}Uv!H$htcf@~ z@Q>Oz#{89Vp>!epSmc-^qQ4LUl-La#BD62psjppT+N3hrnruHu2@U)5$3mDX3B{!SHEm)BcY`RwsSX5KmRSbt(%pKLd4uLv)C;gTQ}Sq-zYE^S&HST0nPrk*Q@ z{a>C|oFvWTLKSPcaiTo4&KBjS5%`+v-LASoyRU6sJg?Y9;Yt7nj3c4hK&}s3;<>!G zpo((g(~+1!+@G;oJ((c(ol^^WxK64`PCHm__F@1&VDaO zXFC3uJH^K#LTDA@OQJg373KPCn>wm>X1LB`V4gjem-SZT)AeW{89b@0na+6 zb_wXR;d;c$KfmkXh;4Ct3m^~_(6fF#UEHmz&mYg5HI$gYdcGPyp5B+N&a0yB#St3T z^2r6oXMN0g$;@1yFIH6eZKm#xz=8rT$$b2>#Nbent1SjtvNaViN;UH9dLQX7s~O2I zp3@iPIWC@h78F&Oj7}~tI;+TB;4m$=tv1$Kl)7xPmBR4+!t#H#4@EAGqo z@dw@5XAKdMV$!$@hyW8*2aQ_v|B}XZSp*vYJ~qM2f*ArtY_Fal9frzD^OL3!S-oEfw;sQVs>NI^v;{% zGC0d^mv!=Sd~T-r%Pceo?asrX1-fM##Q9x2^TcQ0++{jFn^6}*NjvtUiXqqG6Ew+Bb zckPUncOJV&WSK$1-Q@v_&Gv8rFScBM-t z3gShyAY|o#Gkh#LjXZ?~yW1v7^@U!#hlBnONx()!clMG*rMK$hS(ZL%oxc|{)P4d0 z6ik&EeUej9GEIx6R;I&{W_DI=j6vzUmRME@b(d-%Fg2^|s26Xrh3Q+?XVFDc2D*sc z@H%!sE&Smp+3~cUR0|e~3b&3IiTOFeJdA3jj6~eUd}vuL%WKne?1a+FdwqK>i?{9P zpCLuk%_=JTGyi6U)K&k@X!<)et=t8G8cc}IW+Hnn3QT1}tSPvYMrsJ%b=QqnnF&l4 zr3yHL)sh(Do0*Y?!r2?a4wGs0ML9#=tBxR&T@0$B5J6gBQibHP)d5XoO-G^_56o7G`>67A0mkQ$Gf!xNM85o4b15w+>hlJA`Y@f{^ z;-JeofW^=UY|Sko)iX>O69ZT4Mw&vT8^x5#PR=zEyJ>hekW9u{_jKSc0N2n$29 zFX=W_xMZV;0;@hFL1KyMhA9KeiiP7jXJgTd$nKE&$%* z>I&#DgG)*_`tocC;B-t;+A<{-S4VJx$yLP|T_Bjjy*Bn?yC9X0fhn6ilNMi^*C^vB2r?R}5jGTrKi6OTV$#eVA zWmGaqz99;U8ZlAMX`10;2fU&`tCTc?eji}&5EG{Evqtnnxzb@EeV{gLvO`g-*KRLW zhuyl?Z)Jv)3`R~`b(sUm`==Zh_&8gf?Cq!t6izo!w~6fDA*G_!=k4+y-QmH9N*cQJ z&lVBVefi$vk5Lr8CO(iA0(Ma+SrCg(B83*|%gC#d0V1vZ~XBqE-1>t(UsEny0( zGO3-6v*!g)kP%^f!&60}E-_gj&Bo^N1CIaLHlz=EdOFI9FQ0h%pq$2%?fNOO0jLrL z`Reev{xU=%)8P$3iReFD-bjOW7Y#+TQ<(H!Nfji4B37Rpb2mOn& zi$;(h<5x@H*>itR-UF3Xp9lsaw#!Er8eyK|JMB+;fb`n_s96R2F73tFGA~Lq;R;wp!?N4MX z=5vjfe_UAvu)mKI`fu>7`8xT}a5^i>jB2zUZlGi^g0Q;n$jAQ{NR+Fl&PYPzUN2F4 ztO0K_(HpC302-H|_Xll)3lmKhv)&U0)m+<3R^zm^@F%O0Jkerrxmc@kVGNzN0BVD` zzSYj2ph6)A9;5bvS_6_Ldfu1PDgtE$;?HPclSB3ca81%o$IDDDjZ}GA5V$MMJ=(Lz zPabIz6AfMhL`~wcqmKV@gc_60b?<5y@?oV0=%jpFvr zz6=duaxK3(9)=eC;pDD|emNC1QoC4D@S4ZzF0pcb!^2_+NJ@R>f zM9c94IB`v$EsTq_ zW9RkAx5J zH4VRJ7{=xTXUkMVCh%$Lf&3X`^1$+?cUnmS{^0KHE$Pqi?nFDshrEiHFgbC1rDw2y#tzrE_jpa&m>MyKrLp;nlLw& zvf;LcmSFnin4vQhL4$XwlnutzY+<=@9X|g{;Q5E2iksm9ocnvM8Sro8OS>Qp!vBw% zDq2l){#wApqbK z*rBxizYTh1X+L19{`grXomWJ&&^fI&;^-C`+g6}JfXO?hsEJ9{Nl2U0MIk`Jy=(is z6cE7#5G71#{Z(`-Yhci?uIbBeHUEWLNT}D<>YMfXaRr}-B%Csp*U^;vY9(k=d^aa@9jaKl;ChNCgE&AF2x_kB!`ZU7%R`dB7nxEh- zV~J{>TTrFB>)qMb-YwAd_Z}Pnk`Y|sE)_1O!R-Bj*K8QTD=;pP@xEt#`!=|TH6@2V z{?{k0hf4Veb7)W2gV+Gys+;v9PVFtDR$>Vvxg007?jvSuKp9Vc{egV{RWQK2u(dKG z*f2k4siy^=6MHIQ`tUOQarx-sTsDCffvXpVIZa5pa3)|v9PDlhV>~BmCs(MR-~}xNBK{ZER3RLE5o@Mx zzI5K$*yQEB?!wjgNm`$p6B5AYPNh;QXu$c#+GFZLHh6{X&0JcfizVx|hn}#A!50Pb z@k^O|Ed=KhocJ$$4E7>#U6LAkH zXcnOp@#M79@2*-2nVL`9znd183{Vi^Yy${$-}9kx2@432P6>Cl5=H^-N2?1{+U{Vo zSjVR*Sdgf5>RMb1KOUQUc@^)~BcizS7H27jZeyHmB3kZ3=lQqgy-G_qJ!{8_w7fS- z>;de{1N$esMQ3$qbQ<~)8LK_?)~^>KuLPsPL5(4B_M084>jo#w2>c9nkr+n+ZD#aK zPs7Hnbshap=g;(65KZ%;5do+VtZDwqa}0t9S!d90mO#l5a!~&KoLet^`Ia0GJ+32b zz~HMeuH@PU_c)<#i7D(G!rEnC27V3jdr4VfWJAUI?x2PMpcbb6X_gp3Z`o+)6$8Hg zzx|Uk1^;DU2`+%@0{@reMZE04e3iasP`zLX|5&WCLq~A2-!$#{@3(mxD7+MlYAD$M zNEInw)lkt~NMu|;wBuI^0^~c7?&>)=*6pAx;s?DYhUey{VFV_XJgG4M%uPp-BusdD z8ANf3*Hrjr=S)J-T%_>TK;ZzVH*3^Di2}o&q{jC@BdCD1pv^p_l+{8pfY{47uhl}) z0%IKOQ+FXj(8YT#s$Nt7SfHbzF~j3VX~wOG8UO*IEK1pJgh~Pl9Zqp?f{Fw-YX<%xp0~L1DQ0U)#DtQ=$I@usHFn+7_$%OPndQE-2z>d#Bovgs&u(&V?hoz{81)oAQpf0wJwP(_%UG@+ zwar7c!%;A-oM${MMZz7{1g|wTnXIFt-^TOZX=Y`d80#y@V`*fI8`E*PCv|17C{O&?RvaRm_(8$3h_X|RfeQ%8cb9EkMqS!6UVL6AT*UgS~RY^69YSKo8?V4aYfJ zQbkj01SVeT|NQ>q_{PY@-$*6b3Xe>KdBN!n;*}`}IpQ^OEec)<)&M)^FZb0;+#3Ox z*X`4FtH)ta!zT!k%(`@*ioJO8^xXbwHU(rejbk{uR2t(whS1?+Wb#A6CO^i$j4mI` z`r^PH4NwJSqK+hRVZ%{4xv&yYShJN4cxsxusYTTDrJC)rqe5Ul4S~ z%(7K4f){=Z{nwob?#(`R)pU!t6^14IU!{5#dW#o8r!9XP0KApSJlW-~=a5p;Y5;d0 zRi!M`-*K_fsSdN5wp-C}$QV$2T}D?nxJEQ&a+1O29L?>K1Ai_-4O-LOs0pYO?>_p5 zO0{Vwi9=0M@$5J^t-Qw2xK@ zRUN%W8rhr8z)z%lxkE^SH&WI1bpRON;MY0(oyuOex0fprtc91lD&-)?cr0!S-mCvM zv*Wu2?y*sn8{MBh$;CH|Q~aIjoONe-dfK>~AU6)Wn08<;4>;PKvz*%JmnDIcl%>goRH!<5`A!`~3XK^>S#K;Q9jjpV&Ikzc$8`_W#1;;#XWmEtT6g9`I)VL8pNR{6eC zJ{2Hw0KG1-#&*7O)?DGy9=&s{g8r_sOU@rVZ6LBr?3m$b5;V3;huzl_qkrgVPZeYs z^&>jGuH2vSJR*{06wwA-N6{lm2IggG0v&t93+bd<3}7hR7HKfiteOlf<|&zFi&khl zFzUP?R;gs7REk6dICy8Z!(Cx}`-8&^BZAN>0p}ErioB7Zb4tdWY9))7abQ-_{Q8|o zh9-qAacdpEi~Ni;Y22G9(|X$-T@hPfw-A%Df0u@gUk$mj8X1beJHL#&o$6M5je+iF zx%p1M+<{Rz1e{*S-{S&-b9CK?d|kB+rdW|t|s|)t5NJCGNBoPPCkUq z0il)q{yibm{t3M^h<*M7IB=n$lY^UD6qS_wTPS@|P9W>pH|2k3ecp_ei2b%kY4SN5`G17>590DU9w2l9rz+0UuLC3IxQ zXmpa`&$Rp);|l>pWO&gdCmqdjee=3VfLcX6k1o82K6~sLznNGt2ly3>hG~o?>4sVh z7tBEEl}G#_{7s46`0V_3Hen7@sMEH zlPGev252TzLdorkq}6e;L-641M5MD)0WlJ3jEfWZvnIB&z=#~rz=Kh1S^+4`fL~0M zkqvzySW8gfyKJ^!6Ix-)1a)x_J(-hm6|RqS@HLm{vU`;vev2UT8(jF2&{M{rY_sqI z{l%*>2unTHkz`e;Lgiw3ITqaNSz}&;Y}xla$~w~X)Zk|CC-Hs*_`5o(DeeYof_lH0 zX))qk`Dyv#pr{X|`O%sYqEhAjWJ`*lC!QNL+D0{k?tq9wu#4!@rh$ty6 zBG;p?pcYua>E#?A?GzaJ9G6V#we(9*;vboQ2^Q-T8ayZG4GEX!&_GNwD#&@k%mH%5 zDYZl)Cg)jhOckc`Do+wmyD#SnBLXpdz^E|q zG&L;;vjfqxz|ttzO?T3|-0Zq9|1mNrq`Z28T|=1o@PpgXr5o500q9W`+YvIeJIRKH z%4Mbu7g7m(bpWNIuKtu)P6^2fob0G@B)sBAR$Hyxz$m|i&zk9lZklQ& zwuVL(&E?Jl?U-_CBvNWGo%|TwAXUPW7?q|r?D~rViKCrvm-I?&x<=qn8i>m|IFm9g z$E0dK!PD4G%d1dx4{#aQEYn}#qtz+vSzooPZfqS*nQ5rRe&E(Yd+yRBuJ?%$^zt_~B>7kU0{5)tVDo`J)n7qN_>0%a)VveC#bAcU+|gU zcvl1(Zv%mHkj zpYF==p-Ly{8c>X*ZKGznHc$F{9Optf5{OUwExbj=YPKSPAH9fKo9zxBn8&%b1%uVw zK&;5<^6!^Ibw^V6W7`RC#_vy^?PCxw20ctYn>!i@J&IN>_Ic-RE9+3%4F+~_p~I6G z-7-%C^$vSB_a=1OsTGQxa=t~|Usj$p;w-E&ttbzV{B(}a*=qcvR?*&Rs7Tb}4`SP< zg|};)Gf@-METmz5jtk4ZEZ5)d+*{D zi#5j7Ec6mhSZ^1OhiMcUl)Beaif~##0^K}rVQ>{ziYM1}oyTbJfu^U6W9i@J9od%A zmF(o;8;!wZ=*Wue-TSH^kC5+K{1^ z3d-amw|9r#WCTu?sHpryP)eVL0KajH*|X%}S#i!u*YTn#l{c3l`pF6UTKsVrEgwri z0Xwsy3!w?^)6ZrrZ0y11bCt_!d z+iYdrLMPNYHLG;tCpKeSH$19;6Yv>}ujq+V=>vz2sJpvzi@xgXw^cKVR`a`vKhD%{ z#_`x&Z{ic(PiBJ`oF3iq@V=35r#kn!u_weB=*H9y#SFqsW zo$6WPG1K~s43?gjE<`2X0d>0F0bMMrZhE!dMPc7K8hHHinAhrK(AYeCkKOFl(_WeB zn4aEfIg?M*<7V)k;h4EtY%RhlskOh&>uL}QzeY*0Uf?L0b_x_O+I67Orh$;W0?a+8 zk>J!o6IW>E3T%6#i5N00E}aDN%6d0|76y z7AB}LVHZd7Qr_9x$TZA?S3Oz8A1J}@YD`!NsCx!l{*o{KDZ!#WLTFPeMJub?7NU%) zk`Ox@Ybu{D$h%S5kt&(9s3dQ?Ei2&F*wS?sYdcdl5iao6JK?8455 z(y50f|YcfH~eedPE2e7Ao5jVw`r z3+dtt_zKmvcl)?KQS&~SQutGU`)c&|Xj8Ij&s|$G3tMDU0f?23oto70wURkp8sCr5 zHp!q1YD(jzMZze+LLOORz>Q+k6~zprxGZ;o(Z1N?2>OLZUewf_HIhw^$BM|q2H_+9 zXJuq;PGej5G4fcr0HgJQq&g!D4!6(gg%uSVy&f%vMUvZIBmSuFm+BR61I(2}n`h7( zhO0`2UxhaEI>3Z7l>8mG@A?LnN1yXEQ3!3vqdj&xnIJA_kHX9q`(|q7Ku$7k5?E(K zZ~P*{z2{)yY0pW#t8b8up6C z2AU~(5}+*>PoAf#yDUfm*%56f8S(}5Vc7rzj`>k$$UEHq-psB(*iux}7R76ln)%*Y ztpk3N+%=|Ow?N{BNzX@kZJDU*rBh!?m(5;cIQti-B}x~Kn^Q2)ssD!Y+7Z3*EJJj= z2(fa0(E7~FKLt<6s*@V;7r3Gx+=0NL`x4Fg2!Q@^v?}$tpKj*k`^4+v^CmVdr-D93 zV?2iqOX`YyE5yE)_6YLFXuC8OdLzFI|A%*V_mFSBX%+KI+!7(yjXYsS|HUv47OFCf zGh5jB!$CHTl`^hLrS@PNDMi}z>n}x@#Ypv5M%D?d=wNs|UB;^?GObt6TofLd!gt%C zQozsh+U+|+bZcp?&(xNeA!%8_#_F%}c#)-PL^MzHBFzaK^h4TTBE`?Oxfz|5w zfU{5X)g(v~E8Lo84ofp&Vk{sQc`~fd&y~=^6Yn#eX%8Xq3kKbv@BPMvjI6$GiuTM`H%-jW<5XBTBVXO_{L{PCt=roB79x+*9!6^^)2Eo*3g;G3!R0%P3TgL9cTy#x?C zmEjJph*7vkg|o2N@!@3{d9mUlP89i1)ch4Q859^tx4%elD_-Pb#br1F;sSCrZ$lu! zGM}545k>CQUivB@3Ts*AlER?G6d2SOEX$8eabb3}IQ#*f>k;{}ScNh_S7}0oMP3(XPBF1qTAJ1h-4lF)R5}QzRi&fQknlE9WsW z3c50VfuHu3_y~@dB~lnx%YtcPSk@<+a!W7omHp*xS(l2gpLwh0$|ocWbOHELY6(y? z=?s4xffbcF3iu;cRiBKECjnhW@Ocq87)2ff5f65&MsnRZJY7`0#8*Yu^GO33mK-Ic zLmvF_TEpDLzPQ&|h76@yKtA*Ns2y`cmI0a>%J~ZO*6QC|#|Lrc>o-7FBE0P*{W(5n zGff~9rq3I$w7u(-;4RMc%mMfj;wXbvpoLoZM?v9?t-g3ICPp4N0F^X5Ow)qj4C-eT zh*T`L*j1l(HEM}5Sxk<6|H!0Md#e@6f|dE6Dvcz8Y<}{@I#0a{T>g zfDz#;&nxf6YW&tF92ft&8>@o}a8*91sZGaax5I%vTTfa94|hnW2G~!pt~k@aW7BAn zrnEfy^wc?8SkFH7$`hd4X7c&Y%(}re&@~wBm|1*X8hZFu$Kb>y)dyspEkb)Qr ziVJWvF|;#va<+4{Fmd{iz3kt9`2Ux^Ox@-mAn<>trzy#Ggrw$Eie??m<%3W(=060D+#-xjz+)5U~!B31UM~U=n#;H zd;v5{VvJ&}GKLfiIEuBToVfvvlsi=uGtT>rQ3ZXLC@;6qKN*M7na1fSRA&4zF<4PJ zO*tb-=Pa8xdUo+XM2}KF*@&oi6Y6wHE!OG5FhB3^1`p5x-ED%yVHVQFD87bn+^^xC zT2-c|Z^oiWb<-^IX>b(@U{eLGEv@GpR{*y)%Gc3my|SnE$=%))*Y2vrj)eJJa{kWu zzaD?lOVL?w;_r!~j#-IJlhkLAdhRN2kEy#-Gox=G(6YOuYRIy~8Hd|-7kpw|KSB{O z!AGCYZx>;25>bb?`{ak0=dF4+OVvI2lH~u+DPfqqrlCtbWGap}I+NH=g=@r5l>n+u z7bJ!3h$KC8JPWTq3a)wx3EKEiUE2GzP2k^>k6$_sx}ggc#4i-pfm#UE{#;1Tedcml z11-{c#4^&$q&HfsDj*}Z^6Q|GNu>54hSJDl)m@MI82e_X z3B(UFtSb=g{wN5~bs%#9_^F(@Q3KFXr zIuVAdAMYZZmC(b1w7_#6@wcsnAe`wT7k0!1Rao!}#doGir=l^CFOCydDc$3i2F7r> z|0RHxL+X!fxbh;E;w^~N9;1D(@3Pa)P)EKIv{nQol|C_YjIQ#!;IzaTitU|trHywA zrz+-!@On(9J*snzvGGrW`*gs)Ohy`vGel~QU)rhH>*P0foAA-}Qq~+|u09=eV~s*1 z8|j$RU=gKbml0H^Lp{@k!rW2IrLcZ|GnzF;?mn$~dn;Wwi+@^}mx4z+RBzcu zJd!XQ(KCv)p-n^8-5soJ613R1Xdy^jCz6Q~V=Q7887IGTs|x!ABw0zehZHDRF?KF` z-K^ClKabWgHlMx;!j3{1E;+2*(?C2n_EE)dHE)(M^`KK5a^VrS_GG1K(n91xJTV~z zRLLZ}j3M~!!rys^63KuPVK4j{FCve#wezV2lN#9<8^({+pB(c!P4hC3XD6mAF?q8m zpqHMK`hD^6s@#u(UR8faz`^kQOzHm|BvaQw#NzA^AWKW8VCIqDDVBA__ae-qtU%RR zQs_w3am#l;QK_l@_1TjI)I_Rh*y<(2hh321Q+?v5U0}I{kGlg7fV(XwWLIIPOwp<7 zpVE!w*tHJp?Ut6roFFP3sFSi2Mp1vW4B==GDia$RF=eE{+-5WeC+jQms~dJ!c@s9c zf`5hX{=(qvRtGZzGhHf8%N?tH24N$if?#*y_yY|pTSz5>s-3npb{rz>!(P$BcF8WR zcB?U)_wX+*{r{jR^h9~s|50P|3h}Qf5rQZT%s*z$|BjqDSMERs{HxbZ&j07m0SFM# z8$^n~8YC{N+jpAiKYQnYXyy7tAUMrI2T%w9O0+uBuM+2Vij z6#th{d$8)P+&Uwg&$YTndaN?M63r0SBGwu!LF`PBpADjdrmeRyFPDQUPov-Kb$iTw zqikSu3g=_%F#qt=R-xE&P+g;A67W#igtQG_8BCfvu#6;R2rUm*ApsU8fP31dPDlr% ztV@HlAGJg_@Fq6C9i7a(Zj6fDY@%lyrc(PSEoG7pv35SJQLGK41X^?Qd-9T`uLrV? z4SOaW6#vEYa>e-d#qlIM7ioy;RMMk2GmhwSLZbE)65{l+%e(L|Kir@EpiJ>)yIe#^ zuMKE=S1-NeyS=CPAF&W)fSTnLc!SAM>ueeXUR@pGguvL17+pll@#o)*;P^q$?UCy| zaK2UD@4||_S@-pqcw?rN7Me*;hbN!uM3}?bM7z`zF# z{M;y~rePw@sj=bxJr9a~@i)euJd5YGH$PdITrF7Vi+oI@-wwZ0Uvi{;N}$I>1QcM$xbQ8oX8#< zxr1z@!L?h3k#>DNFl3W#!)5Fvm{si92<_fXm;oj|;HhC-f-n$p@MdHO_^pdvL8NQk zLO4V}64-4$z}zxl0B{!IP<#xDNBP;&={}FzdFP}f&iMEO0g+VCd%3t*3zUa*LM47A zTHPbO2{2GY+yIjwph`5Km5g89ZcA@H`9TBzob4>=aLr_S>5tY=jnxp`I@@A5izH{h zYjSOsV`kt_s@-hA_4_uRpx=T}H5Ue+(8dWfi{`O16l@D(z8k-b5s1w+$~0tQBCW+| zJo{5q$k9kVFVQy_sBF(5=Y7pedxO+f6PBIj=^nwzy~z4%ThV^>3(Cj&dr#nHA-Gv2 z_h*%fV7h-tuIQ^-Z^#U`NNYI$IDFdlvJz=*LIqs5r+#72QB@Pu-nQosMT{2H^VOm` zEsSA8^>{8o0${VCk$q<%1xvhrFv87n?AlACy%WLJ6aD%uU-BYjE)K;Qpj|9)y9aQ1 z3XVD#?Qcpn@Bb{TQg_b^3j1QN+_p2Px7R^gis?kK7a-Svy0?G5b_!jaQ*xjivQB?Yu%nN z0pBaW2>hQbK1KTu3hqB&`{%R}aH9mQ10o6y9loZLfgziuWpUPKsU$!bSc7V(&tjA= zq5Sn`jRGY(Z{Z7t@U*e-H2n}P6}JvG`%Nf9s@K$oD!YhiP(c#JRwi;#)52gA6hQa* z;U3twr!uiDwWk8zDvBlHuL|lwuU#|AqcTco1Wi**muKdYY*K{%L;7tPK$)xVFWcTLjy}-kFL0i>8+8TTo@u|It0p}?Lb7rJeMEQl80tMV%z24Ct=6)o9T+}k| zgk+9d*(y&bzLy+He@y5;fHPc7F@PFBxS$tF-Vo;}E7kzC422>`@aY<|LD^h5PgVvJ zld+fzWnN6rT2EF77J(R=GWG%!itKP8)evfg|IjFB_z)+#duBHLzP(8QEjAv-ez1l2 z6r2YZAu~e-?{4bir(`O>9pAk?;YW_>a)`Rsowfj!0Kod?U&&kuyp+f`!4W|jL(=_tUy^qgZGQn0K?u7dd z_(CVO;PyKgM}tHFAYrafey!dW{K_p1794Ymo@#VQRBxh+N*k4H3%N+^Fz)uA_OpFX z=E_$x6wFTg*YT>a2TwrE-jj;!TKq&v{(O6TZ6*C+{MMeMqv*-NV z5@sp>FH2aISiQog|gVBY^uH8uFInE>CxXol)d!2;u^kvn4|@hq@t2eHcG50WvUca8i3lTQf~!|LXK1> zMjt~hcJSj;CW4-}1P9b&M{r_DhPTO(IMgY|2T6_4=cmyQHK6P+#S+jdYDi>;ft|S$ zlQVg15>sl1bkPkQ;hR~wdh8OIdm3d#2y}P0@eb$k z>*i6%Pf3-rW<+b#yRqxmEZ-G#tec0-FiuQj$n5wlBHfv`Ndb-oWx*nNwZ}c5~z^{=O<<{D5IH$(svr-$Wy}9Qm9L zoD7Q2bJ}b4!c&xSV65AeQyd%R&Xp^g^`y4x?TXJ?dDre^<^i4lERV*EVD!1GoT zqh_JrU6%=81C998rSnrISc{jp2YnYJ^xkrji0S<8;Q*rkt=KoEG51V%u#<3J)v1a) zFccdDOp3cw3@s4q74}vdg~rh6Q4ubNRkolIx-~10D3Rp&RZ8kKN1UJ}O)){_)*FG7 zlE*Tb_vq4H{8@IQ9Zc!5>u(M1^GQMGo_kwcIU8A?lyaT-s^T%|La$4lx`Sqj=ZAf$ zkpdMzr~v5##8qswS_x{%Jh60^29(Wio?7>%;4KWBAL3BKg@VILkN)Pw0oLIQiXv#c z^G|JM{>>~(OBt>XE1A01ds=}xO!_Uc#9nG$bn^7w%XE5`K3%fQuTGw4c~&1nDCziZ zrPV!76a-k64pe_dK1!me(}~tSQ}L2;D&vYiMP)ll;&Quxj@t1kc}T}xcU^Wb`gjyy zuN)J$4{cr4*qq!Hr~*H|O20fo)p@lqIdQFCiwgW7=>9*M`^A(|LE_(LgnrZ%WWH|= z=HkL9Z_@a(o99IP>I4KYqDuAE`)YG(EH;6#gQ2wXFbS4uhaR$D872?JU0PSn zd_H-(c5!K{an7JGP&~f+MoO|3k*E8 z+@Zhj`{hx@VTN^wD|V<*QLFF3#Le5qdoxi{=nYJ>WrbJ$N!<7omoFbOC|ZQI=ed zc+jdZ5dggVEK3OI3I%Ch(4#!>!;fzc7Mzh>jhySIH6K22v0Q0LlkfQ%4g9PGDssGw za0nC!90o)*2h>hyY%w6|=h9`)lQ8=&dqneO9p|@IMznxufeZ8E>QY75Y-VfT-15%|<5XKXQs*NPCi2^b!vcgxG;e2V# zgCF#u)++EYxj9;pxFPjVk{}+9;<$0}zZ43){?@#|+`l-pzRKlN6wH3%QoWcLX7_h* zhmz@nT4KlH&#ZWw#Von>Rrg)>4q@yO$ z0xTLIkaKCDD-&ssZsB36h8eH7=3HRf^+!(;gVdd{@g<cg_{ zHzOH*^egz`=iYl@>$>+Xp%!DIdGsg;}O zk2X$Gg-N2B&4yGDFe~GE^o+LAM+xmE1xPa_W_k43#!_QY(n8YUCo(;IdbK&?QL!F6 zTD3Fj0Vba&L?(mu6;i$-Bu(xFz!-iJOLTr`cj`4rmV#C|VwE1sCR!+_6Y=4}iQF?p zN4y?%;yEW@9ys}wBW&#NF!?q93mB0}fxX`0z}>PFxAYVnb0#*uTFnMwQtIsk0FRiT zAbPVrSr%f(d6D{`h2uorm1EUqnRf>K>Xg}f^}i13vAvEY%sIGSCd*29wOCu+Lj6$C z$coxwx@4~rcfFLny++DD863 z8`R)w8`NfaRVRy@+PId}AJ*0lN__!+NN6x^!T8uhn;89(43XoY2?EK%qS#e>8^AP3 znTmSzP@^O+dr0OSZcNjKS?)9wdoDs6jf5?OWz@^9A6OM<2R~&0GMuhVSxLM7zE zW&W7T-yxsg^Q;UmDz`d~0Q!H`_ke8awBx9l;!oQpLa!I?H))J6HXh(QuC;TU@kfoM zi$yNmPX|8!%1^3TZWz@&f2brFDAJWB{$*1iJ;#2~C>UdDtcs~_60J}ukzPKw{7v^t zFom6|9{1?=?$9nDxZ}xRP_LU>s#UUSa%yd2A{$AW)!uC1IG|cdn0}?%_fva!jx5)(bP}mgd5P5_!j3*eR z3d$8&zLF*^XIUZEy2%}Y3znrv^`v3E=pcp`ThEFrX(TQ!Li6WMk=IJ+Vf0?QLyck` zvp$^#(H{p^6)8?*VoCqFe(+v?_^@1ta1eDG+Z`x>{;$}Ox|TN9W(iGU`2L(Mf%dkZ z9N%}iXe18XqNoA)70a~!UBkN6l_mGpOxpJW)A!<{9yg-*lSEH|+4AMl=zR~flJGQx zfCmD5*DUP=HWOkL@f>^a-kMzRguz$sdbv)cm3;PDonHIN0z{TI!hSHp^uvm+<*gvY zkB9eKAgdCo$Er+7F(YBas|WP(e%Ime=|%PO!>_NA^Bm{RRmtvceD~pRKsHccuwEXLt}EB`s$gP}?(1m~7Qp(D;D9u1_>Ktws)k-3eC99-_ex~Z-3 ztN?M496<)F(`V40e%qw%{V%=z=xgt8_;iqBZMP<5Z{%1*&|A};xohO2OdZBckiL)@-X1*6~YAWNlCd{QA^>mjutKHsXOdQ zLn9sIK}@yx{~_$1qAP8;wcXgZZQHhOCl%XCMI*LtI~Cim*tSt&#ZLZwbFQ`iwP$O4 z?}PVjw70c!@Ql%)-mkk~1GsbrvEgSK(38LJ!4wOyt`16ws66{CXk~_+fgYk3Lv=%2 zxLr)5Jk4>+1@_7T2#?VbG9Q5|1&8so!--o7Uq}~^552G+2A`Yu^=H36utGo3i}qUd zHN~-*10+ZnMZruM`6MQ%c!yl+7sc>xU@ur}>fp`DgVXo9m8mVAofUUUyv-Fx)@8)h z0}8Nc6?k*Ow@Lo$vI7HJ&Wg%ICx2OT&Kto%jzM?L4dlQJ@jzbM552aM$?ni__kYN9 zW_{X((O+I%EHd>}fjVGZ+YW`O*Kho9J?uYp)Xr4GxcqmU1MpvM4ka*Xxc|2zH%IN< z{`=EB8p-n?Z#ih;#f}J8pl&VW!2f!|o zPQ0bJ9zSqxNCgpRLB|aaHI=d_js;(&zBVGpDk7eYAC0hRPc;*VJK|2?nlfLAxWmlB z#Zr9Udv$+B=>d4dN(imyrKy;|a9K8IJN*@6mInONp!L|+yL<4e`O!LA&FbeOeX}&; zez3ogvEiIKqt|)Znb*~+skSpE2=KKn8AtH1&Oonq;&kQZ*tx#v$+`Qc9E4+gkbc4Z ze&H-nhDkiBgS2yyOyA9=utntc127St7<GLiwUX?}E?%%mwQUf2%@N(AiW8CT77F{X4R;mJAvkq7+ZfzHckeel0HivnEtG1g zZ-Y5EW$Hash!o8JfkY6}YfO}sbdUa(N2N}$>HETw>fO!l(5PfZB^{1zHG$Pq=@sSZ zFlDsUD#3fd^XCl2k9FAn%&PTV0)r!oMgxE07n~PPkuH7JzoC(@-RZP^ab@ii)X8Jz zOU$~*g$l52O$7qzRiv|F03JjeY~?6D$6oaIpcK>|pmXO(klBx3J@ZaoTyO{FN^Rlqp6-n8 z=VR$7C^BSDX2d3sNL>vUTt~uvsp$&<2Ws^BZI|RWJ*7?ybfXH>080}qWI2^984OA6 z@OZoltVSuCErS_YJ>pqI%|D3-lamngHpT3JA2#AJPo5`^B-tc3wPZ8G|5!3Hl@(2y zH#&ZMV?SIWeo;K3C}E6O_y11W_Sz#mH)Za|r3IFtxT_8N6J=73VbBlzGXcz7;9C136vUQ38TIoor9uxE$Et_GJD14OK!uQzBI&tZ z>?#c-5Twi0XpRf}1&wZJdoVOU$rY9EwgvC9t6ydQe&gyfTdZS!^hjm}r*&tsSw{#sI-RMfub^9COXCFJxWP7s2NN!^#yj|b?v!|Ur+tUcRrvK?kN84TfLf> zephP|e=Ee?YJs_Ce5pkf_^kKCWxLnqMFh{wiOh=ZYf~)QFh0bSJ5&%94%et{Cz?gc zrxm~dB_nD%`}N>c$c@GlVCl>&<$2NQf9#e8Gd|)!uX*o~$&|uqcD6R^QGy%&E0|M)8KVHXol_eKEo=pN{%Gp^YJcgWwj?4x6fUJk& zi8~O5bq~sy<|Dlx#IG&D86J2^?Wn`Bt^b3kP~C;~_7nS|ibLru9^2-Ruk z!ejna7f04Qm5sg=P;JlwN|a&)-yZh6RZ0HmnP~z``;9vMHM?0=b2i;*0lT8WR=Ev* z-LFuNJ7q5GdZ3eIiBRKBpq}x_S?wDx`N{qEC9v^>gEnaqQWFpndQT(rNHgMvCQWcV zk2*F7`ib$YVB6tlF#D0F5-mpjS&=$E{=MBNzS)wLu*_a=fadCjV~zRob&NI)uXU40 z7z22;iv)ki?&-<^c1>#AQMHy1}` z_1}@=jMaKd!^yud7kA!LyrNMg?1IVyDlrx{^UdfTHgs9j6BQ{_=FJ|1VWaTWbSqxX z5aotnIfEmFfQ@=xiHDx*YPX9NMaJ1U`r@1w1J-!3D-I)({djTl@;F6>i?80)(3{)5 zU)_Iv*{*@jlvr+5I@)w*l_JG^X$Wwe*C!ZZ1$!(x^dME;tp+qcqGMxZX}F6#>h>_> zrL1tOtDCSImwbGE5aan`HIhKS1g0Mv(*Af*5X|R#YXT!WW)mrg6ikm>lw%R77F*?gy{=E&TfAG`s9i!>7R{C5M$wka zP6bN(^TB2Q*y==3NwJL_P>$J?Mgzf^;EbI90PT#MKQhpXR1C`mze`B05B9mGYRwT> z0-13RBB7uI4jho03+1kWvEorqDvbg@?2F_=b_a~`DUHQsTmh1*yUrXBJZsMh!+V|Q z8*A{Nk4G3W363r$G~5wh{0=DeX%k_ydB1Y$Kl=~28n3qx@4`zpcN7&F0C;cftbDgy zfKWSu51tjV-itKtn$$yyQ4|}UDeM~PR-d4|Jx5QDi{X1@FpWcGvgwK;*vk6;)Jmxt z_$49&J)|}u=NgB!vO!qS4Z`BgyKo_q)PIGWC|J3R%!Oq#YFac52o*QO^_q& zW0%ACR&b^k4+>p2&NY%8`q$a1WuBxEfK_TBPQ$08&HE*r$D0)KcS^+=D|7IMtd35o z!}(m4WkLgHK}~ZdT~rS#<AvE<=~i| zbHPn}JMhz9+#CKsoGAoPc0&S6ds5)-N_&76DXeQ8o8cF%;M_kVB6> zme)>b5AHAeOi8v#6i}_2Mo$EI&G{N!tNyQdebz37MdfX;pVGqgbd@93mpvfc|Xf5=nQe zzX&6Rlkm7m6QkL;l&Kvmq2a^?v__fGTobGP&irtl z*yAy=`&wkuEHkkY-KY#Vp6Xrtbr^_PFuv#mTT*dt&tp7ZIS)rtwQI351=yYXa{mvY z78&_r21W3KHV#jrzH9JrO`L{p-!>1eglSiZzQgJ^?xLK6&b>~zb|37|xSfP{9@Jjq zy{sb8WLVy7m!^HIBwM%C+|hd~Ey^~Xb0>9Ifc}C&duqxc%I-zW1t<$ z@t_{0bst%WM{{=YFjh~u>fy%_rgEawjoJ1M$&#l}f)+E3qu?(cKt0UZuW-cFbFFa- z(A%wG%S3}O=$P~eF4w1HBWBjpv3Mvi6GmR*3Xu=iGkw9G(d^`k9tlex&=|){;@;lt zV-nHd#cQd z&9_99Q^5BgY{E@f13D(s^+B(2W`&*0JTu;(c55{3vFKNFj~WD~e;0d&Oy!e)GKz4j z2Ll%|h5t^g_3&#RG&ZSL-H6Z?mX){WFu<>dOoRJuK7<@GTF_C9>9=PVQCID`bd)sD z`@q{+m+d^&8LDtvp^sIZ-0LmDV8)8t+Fx|Nz^H{A>wg_;Be3m#DmzyEzqsW;NBA`6 zN~ReB2&j_!Ur-U?r?I7j!+)?s|2dN_(b;g=7;OhU88ZLP6;ruL2=h=W|4|&#>6TSI zyuP+jeS{wBl7OXJ{O!{71O>H<62QBs!{9nCggmi*Q$n*0=(&e*_5QGMPvTJgzai2T@+YR)OS)Oc}7Eka!-{;V8JOdQ=8Rom1OKcoE!vO)U z&Izw2I zn&YrOGNm$$Kte7=mOOYSL$abR!|n3E-rEl9Px2rDv6{EO_IabtAJc#EKr36@Qcjhh z&-s?+c$Wb@q;A5V{(8jao}YZ!Tb$I*L4MHxFBeh$0x2=(Bq4^_C4tu^qNIRWDM+aHoHXxPmv%Bm*)OfRgtBgSpeseaE2 zMO6X%I9q0F5zn~YKFFy@hfmd3_aLI(ngg~$sr<#^(5uL|gtH?C!Fg&PPEBt~Wd_9R6O8yjv{KmN{=Z_w(BGwVv*?z~yL z?%%vU7SPUIJEJ|X+%j)9A*QXqsizY!(r5&L1jyD*vjn2BjccV(uV8_4eC%uymwfH6 zMV~E!_Kw0( zcfMIxn=SG&T0<-hF26)^VtrkD&C9mPS0a^|n!%rySefPHM(*hpS`2(|@6z&o-ftVP zdp{53o*xYT{>B;hcz*mTtNlDz{CfWY5E}SC4yFOZ=JGx-jx6%JKOeq&-aoIIn2E;t zB`Gn<+l3=WijS}<-V5TlMO^s8Sj>goJjgmz7qHE~jq;$f6!LJ`CMG)^uC`ea5A;;W znG6o`hw7s5=e2~jY{MsvpPkmxGlo8{A*Np=UtfE9ykla3n-jw>zZ(D};BAoc^Zj5&@Oc9h@H$uZt+Ed?TDzF`|_puZa+QS^~*v@==FBopySKWWQ#4BvzLvpR2k ze7y92jjJYOjje^b>os@_T4I z{>)YV{6V%$vYknG!&LBtuXJQ~NRpWs!@?7f5+tbmAXt^KQZT@;n%5t&$Kc#~1Z9#% z;e@xcqPJDT;lx)XJHqBBZy`@#oBo(v%)@Rg*EUwLjEnH7Z}sDMc(A@6e8&;|=I5n| zcXG@wQDPPlI)%_Un58iY+Awxx37UWKZoWT(@W_lwo&hsRx>+DMpB2k~+vbArNb>xX zPlYg_kb>Sa`n`E)ZEzpps3uKVjFf_=CvM29gS{}{3dE8jRwm6tnos>x0K6@T9Tukv zGX0&T?7Tx>f2L54OJv2T@K5e+g+e%e2qe>|jsoPQJ<9?lokbe~ha5xQ2>GB`D^VsN zD$=MtkbZB8(xw4enJ!mB&ZF+>u701R(=zC$UrKfjeeW-8!`T@CW9Z(vr0kz@iCtMo z4VbZUl-E7%$3d&u9{CAJ{lT_T?G{lslJ;PTOJ{r-lzM1(?kC$km3_ThCfSwdbXPJC zc!ZF(rrkDb>cLX^3}G-KeqZv;Zfj!=7+O>KiuSa^HyI1pnYc1+vT7ki^>ssLXnw@; zwrdtH3M9-|EEgYuD9pqy{|G45M)XoCCHq#lI|_s{CtR^qW1|w?8(S=ikVX24b|kla zEU>HSXdc)YQ)sNL>jHCERGd12=c19Eb?AX`$zzHATJDIQWIB^0|A-C`dY}sE8^lVT zFxn)>{4fTk+&}>ykT2?Zcft?YY8OTUpegTD;PTidhHRwKB=xhbt|DM%Sm)%0SB6jCIZO)L*# zR<26|DgO#+I^^);E{`!s`kIrR?rY_wihg6wk<`BBWH3f-1``xVxrLGS3lGLnuqqd4 z#fU>`56JW_PMGY$T-8uCYGzz067-h{1!0Qo z)x%;o!u$oI^>R9-z*jL=W;4TG9W}N{P4;HARsR@%&?Tp&Ak-Hi> z3|}$4utr9pgfL;qc3Jv#{xarEK}cs#jYYQiw=t<^?l83`Eo(;J3_e{G*cC%>7&xSX zw{!yPgWi0K+8!=euIM{F+kPJm{Y_B8*v9xY(oj?5ni%cCoV+gnU^#l^N)dD zjbgdH)lduB7x8%bl|=kH%QB`5WHj(hXlp`CgO9epTWv0gjC$`B61G@>xxuD?+V>=0 z54Tj+>)4HC!YjvY$e*X?qx0$6^hlZ&C%n3qYzeU>kxiTQk+5q~TxeZnjm+eqp1EC~KvB2aa3WS-tw9<;_!Oq#vy~(n(M|z%MK4rq|>#xn%-O(3!h8CDkJrLvpH|gh%KCb-?ASbdI79EA5{tv`bVf z;I0^kesqpj(*QC~(r{`p{hfHSEyOeDY+*W+>E?|a^JK+)Ho1Xi%L;FPJUF||Y&p`> zFTe{WDY^2y(yFJ_3&npIsUuGW!kA&cK}9|+5=ajzJLel##%m^( z3))V(SP@2C;~I>#CmJ;q@1_qVf>HsTTUV;V zBy{?>E&`Q_t$Gp{L%g{1BYt3#Kee=BmS%4%ch4-XHm;Q1WM zA~^^^V@_xR$iRWaC@EEUUNTWjLcM*3%BkfZsHxVqEc}jRw0|#_7*6jNsBDrXxaO(oH-2L93-FYn(VO1Akv(wQsye&9R_B*GFfboIlE=owEtW!Akega zP?9mMzwiz~F?+Pu*&8~0GuL%I9QO6IczjIn;E+y@x_#FHYfE<8&IONWIhtRZH_wQ! zM(>K0%0<6C(hbXmKc+Y(GMl+EhK&Su)nhO1F=NhmeU3~4O`B3nKTTv29G#|ksV=MB zGX}cI;%un=T^ru3Q2{%ds<h)? zKlfr^b>n{|j~`ctPO=bES7am37i=8I;J-8Ns3QwT=izm;QJP#Ew519~RNU50zI-Le zQmsZ{1y@mawz@kH4*sB-WQ3b=2aFf*nNg~nT|SA)R@O-KW%V3)%PyN|LME8WO> z;0zkj-RWWIR%MZ-tSCy{tV%W4pQ=lkdfDuG_%A!GG;+2+YZY(^ch`#zG7aLv4q_N$ zaY{spo7D-+*08Y@936=Z!tiVts= z|D^pPG=hyo)oxCSh0H^2Y!!}uH=to?B0LnJhC z%K#VKw-tP!&3V$GnCS|=x_XV{HF?$OT{}{zxuZ~GMP*EQY>7rN{)oj9RSqt4oJCyW zI}}G@_$ifwi)?|Vk;$msxDph#_xy15Qda=)F87nALCy*Q2pBxw=fl~z3tRi zGsw<+IuJ%HtBJ}_trr^##q;3iR5A%_wvE+<$2DeY!f@cM2%<8&$InK1MH(<L2CKe=D zP%=W2sxAze4{m0n%>u4vJ)Pq*9j4T+OG}d+AD2$xV}y>g#T=Ql+!SQ09GANdCf{7d z$GRV5iTpidQeEkz?5LdAJ1{n);oGfww_WD^(tU8_Q1(*&g(4R~eTY3MG1K##4&J}1 zX|7qn*)?5C$^ql5K0C`(9Jil}5tnLWS}Cg;~X0ir9U8KsA1?f@?Q z#hKt!OTcdcWRMXSqbOyv+jK`Knb4t3=?&v_w~FiNr#e-N79#6&`^0ytl8c@n!_0qk zEtm_KrQ#`o!)r03RWC33mbFQnFBn>S{xA~%T{S6Z2ic+Ep%6eb+{I=@MzzTD7QJX4 ztcJ!1$}97yQZ{8)ofP&A#gQt7?oZBPWJu|tbrH2(@W84PdYoD*>*I$8n*PXZJ-_Ty zdNa+IjX$n?*%lCtmE+mgvi1U{T^g%;oD4hQ@63Zw!AT3>%B0o&HZ#h?=S_PcWu0VB z9gK%ghK#s}3hFn}ppP5OE~-HpR#fz2*#tJ7?s>{JMbfi>x@nK=>|?p|)n6aYR*+SO zN!fh&H~?msXP6#+*~km~^&hU;bgIOWn{ULV@0+E@`>!xgqy{7k>Q8$!*Z=qdNP8lH zW(B~@?C)}I%r<#o)yZVB0gIs4b;lcq*_`~aTVs^)BWt;CKhew6dqcRjLMlPUMCWVj z)ETu5WI}*7UvtN0zT4MZs01Q?IQ3Oft)BGo$s}W|PHLTxw9M|o|?M^TD$5H!oBn3)EF>x z^>F3EL!?@%6=jQTivpQ26X2p;4hN}X6JQk~+&>yHxiaW^T}l<_DQBvO7scunG1Sf_ z!IT-nxDSb9xO5xBCA^Oc*BiAKL$*M&Cf_Y(my7(A!$x!+1U}uJa3_#OM~=_lNP3Qe z;oezyZC|!`>sxPydF@A}fzApOcEbppTJ*>B`p zK#ne6IQa{48WNZ*vYqkVatpB2D5@_N0ER|3ABtk8R*X+b;%Y+TGRz@+xex~~;DX8D zGF$DB82O;4!$MiQ6)DGB9DQhP{NC z+}>5;mYC?hajCF#scof5BT!=+4oSOmE&1A?g-GOAB9MzAWYfWOB&?P8IdAaMeOtK< zgd%QCXL&8IrDvg{k=&UrTCz&SNMm1Ak&ULZu3_33IpZ_t? zOoJkUX8WHs*#|WQPOCl%bmG6WrbfGXcue1CMGNuYsnlzk|7R+djsjW+;$JITQAZ}{ ze7--)g#7QZXdWFj;{Uw$1s4(*P^?AXoJz+%cI@RAZ8XNwYClhI6*lGctwuKCU@1vZ z!(;sRdM0?)lkw_58bhEYbe$M@cJUI35-=uQhgHaN-}s89Nl%i?VCReg-;mNkk0e+& z>u?`cg=;e(7h^@R3yF|VWQkc}(t`93XkZsSQWmrD z3v4H{E`+?qhf?^IiHN^URhN<{j}g_KTb6GX4)>w&US5sR(nd4Cq=I+!WNZY1|RsjfQ1f*R6Em&?b zujB5aJzhe(G6)Y#SV+Jmugf`yh%fZTM7GHxWG1sknBYC1DWMgfd)2I5ddX`6L5^FI zSWTkY;_V>cqv$7kyG{;8I?hSHgj%Ta7~MmgkI;EaVu`lINPxtUy$)f3Njld{XfnSl z*`wx^+aY-9O0>;;&;jg$hlRBLljU#*yg+LeB?D5_%Y+3ry`b%VQw4mAoSmdo%DT2g zpI67f+lWHnez*YAJkvP~7?cn@u&`Xof>-*3HBI!OA??b8Wh@KST+03av@eDCGskzCLMCYL)O37lK`g^lDACu3IEewqQ85q zyF_vaWn4WaLzWiP9i)1c4}DduZ6u9g;rWysu1K}%v31!-fs^j-NAQM!J`$5;FJJ?? zpBYc8ZI8fTL!|DnZr|aAUj}4B*wvEN)P;Pz8DyL?s8+Ax+c|A0XJU9K=lG7YnO?ND zA>^We#S<82l>+X@J6b3%3Cm*Q$EH9$*x)LjMQ`1Df2(DdM7t*21Z&rO3`$>}kR`a8 z$5s%X1MuKIJ+k6`KdvU#>TE&Ehrz*svBdDqz1sx+{ng|d}md>op>3K+^KaEukaMK*l zWGY4V;9)*RL1-RG#|QILTwdRq;Z8tQgBrKT0fuRYMnSuBf)snLOwL*!%CZk(k0n71 zGolklHfsg>Q>7xW-j=ePbhk6}`(%Xj)6@0mkzw|k?hGExxg8F%uQ9@7g z@hG>tFfUXq9Uh*mfJvT2o55_Ox9cBoiduf~{6m1(6$fZ0;r@~)h8$Vr#TB3j-G(|-SaT$)p@j@*s4Cm#M4ey)22 zUPu5x=gkwq(c!~{{2I6Syo2LCr-T&;8S7oHsKozzNn}c3o+?t)>&2WH|1>4^!k%OH zmfvBA|Gop#!9b*fJ{94Xd>qnX#mzACy|d4R*|9rFyLQFR`>N+8kuz-X!u!IW8-!th zxR-nXYjdwAure#!8Zs}>3%&Bvz6Iq0G6bL<*@y>Tdt(t$#N~QV)j^6fioI}(wR~u# zGwGB5(7B)y!)x><%t^`;c@nE4{_tSIMYLcSekeAioVmlVevZ}vqla|F3#3dj1;0}4 zAPHtl8M@TAnNN7Uc2v$~UD$2a@7_6_3LG#|2Y+HCryZm2;nUI~53;=8uSsz+r~y!( z-k~fBYnf!gH_}|;Sua^uMG)6|3pjw znPrwRdrvxjmu>_Q|H2W{ELovZ{`(K6HGma53IwsaiBV#eVWSXQ3J9o-1~|H6w#6sR(z?Y^J*vG_zvz^i@yAr;#@$J{pXmd@ zp<%%+yW&mu^}Mf2S|68f5I^8PD7qh(<7PAT{lSEg0=HE#oorEf8(Depb~4t$Q#Zuw z)wb|1k!O}7t1V^#Y#W(K+RJ<^jTv;PzAVkQX`ZDB!Ezj~X={s)x%}S8t-J6m4ZEp; zgT@~j{T36{@)f)YJ?nJOhi6Gk7Fjg5QYkiuUefgxs1tBvPjXXd+e8UAYrMrX<<-%o zoW2|*xE&of->YjbAUPAuW%Ka2z_!YOAF}-70Ik^X_(l2%JGK(9CyM zkhC^R+8^GO@4hm2VPl5bqw+HxaK2RQi8!{8!#`qi9dyb(^x`$37H{>o98Gkvqcd+; zbFcy(tWs<2bbCrkkH;sCP|Z7T9f?&}njZ>I8iq9V(OdiF8q6k2&0bwCj*+vJRQbzD zOLI>H9#g9UELj!4$ABlfV=C8i14ISIK;Dj0R`ij=d7(?~Ly#;r4ei;S8&RGZ=~?tb29M|U4bE-vr1 z7{hwGhxDkYmmPP=YlNePpuv^yR{cXmD1Pxfjz3nWM&57~q#5U-!nT!zv*prQUMZ(I z%=9MtBD<7RBpsrq15nnUj@KQ6hWFcUaY6&ka?X#@oRxB<4WI^`<=nS@SwF+DGaVGV z{@O$URH;(ksvF-Mz-#r!G%+C4Hi+BrJhpzkYbHIOn>q0l;=WBzUW#G0&f$W7PtPxr zJfiJ0&NvR{g4!?&L{Br?T%v@!97hy_^=HSWI^zH-e`|dLy2#LP1Jx$}YLVpaesjWJ-I}7NS)6}FY%$oc&e#A>`$^}A8Og|tx z<&DrN&tuGM3d3rLkkksai-a&D)YqJZtokyLXp_~YpM*#OA~}E;s?BkuJTe$60fJo) znAC+L^hV|^Tx)APwJZ|zgr1Z<&=z>&2=wLw<()48K48WMRsAb{Elh!x(92tb_tJ^9 zd_L}gsL;s^MN--(w=)h|2`IjA$5LUMy znaq%Oipc(NpG+MqRy;hvD9JQ>Zpg03K$+PjH5A_@HG<{4B%6qEmz&$dkM?f$Z<*H2 z$zEUc`6;O?CvP$(>`%DHNu!3g_G=J`T$^Zs@VqNIKrF(a&I96EPEE6s5OK}f2VH6f^y&G$GbUh@?nG|`dVGg-*pTf;3VOiU zFnt&;A5XpSl3jLO4H>K0&OOvg}w3T zb~=gj%vEI-Ow|#7H;Gl1SkASiPb>tC_97s4pCwpKu)#7$Nur%3VDCt%uTa!O`WLujV?HW zP;CMDosn%}ijf_Y(`|@|9E_S9S~1yTPf5xAi@IS*iP9NW2SM(c5@xO2;mUZ4$NtW{ zPOv^TvL>9;6?RP$vujX3U}_IXWEM)4-GrK&E^2&l*$B@v86$46IdjIgF%fD6DcsEs z5JmYG!J0VH5RQrDUW5We1(GZ`+BX*QfQNzNh-(a4*BW6s#xRIfD@ui7As%ywjG&%= z$52F5&qgP5>T3OrE;1J&2OHAca8Zz~JJCx_g_!?CnKaBH7e5CXP+3_FSU-W0GZtVf zR4R|a*Am&~DGyH}vy9>DH*prJol{PJ?%VUx>NM&Gb0gp|xr|8oS(I>x-~E?A@Zq+V zP@tR0@(y{4noRuHQ3!C|3xm4{JB>?L2rNU_pETVY7AxsIEy+D}arQ=84$-7h7i&=* z+#{Eulvb06EC>2#fLP!Xs-aEW4;8w=IN#E1jzAmD4Jd~#Q%k-#tZCt~+Shs2#T|0C<3ANUG(liLHx%fF=2$=>u zC@$h-Q-#mD@{k3&RuC2V!5@VoaO?quAwIDp81_|$dN=U10n<65x+$lG<(y`_Ivtie zQEhRLT&AsuGy9aG7KUl}pe>P>FAUYB?1qMs+NliF3*c!tZGu=XE>fsUgWPqc!uyv- z?4sAWpNK|$#Q+H=GMzX0x}AxtT}TC4aPO*@Ge#}EWCP`epRNye3>A*wV0nk#aMR2d zNu-{Q_I3m%wyKkdJ(45qkL?vxtn7&sMnAbMRoV}#VvndUB~)3STN*7 zy54?^@#2h)cZ3h+y7{8N&y@bJub!66o=t51iVVH)V$FT7UYz5elvc4RJReziFXT|Z z?{qNDfV1}x^W=0Wq?2E7ca6{DCE>nmj1ek6ApkA>1mzl0!AtT}6xG|thIXf&`aQMF zxQ$>&Q$B~^fX^-8>$Rg(cU20jqXoL*FbCwXqsMxx4RtCos-l@H1fZV}Xjr9$;Y)AI z&>#gSXJVK!kDQOeOxAVDgY za3>MsQ{L9boW{V^nV-`4*WZ{OPFsks6o4N2h9zfQ8Q$IOC)wK*Z4jWI}NJ@z)5s1Zy zXhv@^Dc>Xf(ZisGQR@)5&}FZ;LI9l;{mx5!uKes~o4CK-(x^~zF{dHRr(8knxJN|# zG7B{piG~RsyGYQC#*dpZLrR#$g5cZl8}w`m(EugGJ4gFvf@FVYxDY}D2@BQs#lTnrC06h5(8kH_DXKV-b=1DUOuzTjB4UIs4j>tF(=)uSE~}&(luTl zYr-(MTO{F8$3@PeNkP-7n2-F+L5sX?O+SqG$E3>Y(P7EPcv**bd|j$uwK?&)!(vOPdLl9u}%oZ{3N-uVn=MKouP#3A2nntRmtvMYYbj6R3kl3Aj> zNmEOkk8w;h5C!7nIqjvG%?kJ0GcE=pbHeIk+(w*N*?d(0E6~H&RU=Jr-lBF&26AhB zt0J5NwG=ic8=^}RPDsI6;n)Vgjfk4AX3M7qWOC2Gl9{&7Y7JnN67V$Tncu4CJf!9D zR@-{;NRF(mui}jz$==fG-ew4PwM|xyQK{muk*A4KQwr*mbQdYfISd{V$9`lQKKbP% zGo5<>1J6z^<8eWhsgomS5n3yOfOLSY5-GN25&O(~Pz-;`Hf8adv?rnA>z!u(ZdC{C?j{m`(+T>KTV zdlQ*_b>kp9X5K+gSb{WKXvLdZX#J;ZQj)QQcFdbkQS-Z}l*k#HTXRuEc1^)w(l>-( zUWS&Q`-{NWO!=F(|4HC$rEFE|aKO%R zrMaD5=PPAh>QBqhz>uL1m_Ndob81qoQYz5hEx)95+s==?yxQ~J$P@UiuE{SIXd(OQ zwngeobAtfaJZA->T1YIYQH7n>Eo73!wE8cgU2KDDXAuvVq!A9=44=wMb;4bJUL9rI z@Cq~1+pITk#OzIkWE=bPSAx#{Hb$$0y?+q<1RGBX@eFti84)`^gbD2p8F*uIgdc3T zDX+B1yAEb{Xip~}4d)PVEzEU#zlw)uQ1)eGS$Y7EFWy*PY5#C?4Ve!b3oB`*eXqF+;+P@eqQnk`ek&5T_Q z-mCg_$BCkYV8TED!Lu$G&KTr^Pis~|l0vLa5nnl}Z0n1Ihq3!Z>Gz`hqm&PtCWS+{ zr$@uLJM@}DrrP~zyo&|WlTLa>(@fNSp!HJoTad*Ys*4J{lf?wyBwUX_fC(NcI~4yV z{I05kO--I_@9z{x=OYdq>Y8y*%M+N*M+sUQEk98w5w%$cCg4*hdF=22l4su`eLSDz zTDe3WJnPzn*~4gWe|nOHc(>F0jxyrGv;hgQ97hfsPORC5ZEYx29Pvlw+Zvc@e|DdC zXkDKg=r$iSr{_|BrIYS6Za1(mRwyTU&P;THRm6E1jbQ&#e3HmVut}XDDpXpK6c$%SC+cExFaGh&{`%eC|D~TvbrfRJd%_y;iB7sjgl{D=%)$>&Qb$OxBq;PvUdOTzI&n;-*w$1c-P;j%Fq)TccY7k3gX{%9`gol z+6a+-S_4#(nsxNN=BUsCHi|prqXvW$Bhx%b#fb&5YsFnMFBCAA^EswzmyMZS$KFi{xI|DwCW7wf z>;W6wU)df(m3P4Z>_8^d_xaI08kYq@ENZ=c1sySU%Qd(4LjqKT)heE=)eTjIkXD3^t%PrbIr{T z0hFBTn~|3N54v9NZcHZ5JD0-fKD^lwVA!Hhy_LV3ystm#yz}V<7EsQYz<@N$LBwm> zel?wms#mk?Mh+y)h}*Q508$t2cVL7HfHjFoAy{34jkRc7i#=<;B#b?wh#HN5n(#)g zMj1VcuIE4AOwCvPaYlFhj z>p;hB!eS$VCow3(w9E_W`kkiDN>2RH{I1WJKXcMFKirMf@e>HmHl0MK{O0uZ7c`z3 z;j0eWa)+K4S-*!%SYq**boJ;ACk_xZe%Y4~&lxxIeN^-;5CVPW2p|qISPQ2K2+OxK z%P??fiN51$nMcp&8l}FZQ1aSb+NNA!2d@aB(IA$eE0bs+yd45$9tY2S#=8jh+5h7{ zPcCEY+etal=xln)=deQsqX7`zavh@AWN`buZV3_7Eyi;7tk^e4&6<`B)@nBF4-M>P z8@uwN^}#)D7-%k8qP?Md4C@iz%s}=Skc!Qhou{7W_E=h;%lD5cc2-kR6riL+0@7Nd zOp*#@3(80lWdI8gsB=fAV6bh&9Tuw~3QpyOT7%vbHx&<|@=TGk6j_BT^~{J<&##uM zYylIim2Z-h?DrnOPGCirpPlX|7Q<)19hcdQ+)+JThZ7-SJAa~q-NM!nUiZT1>snb6 zav?{LgELHr+U=gp9Vn3d3zdRbtMzU*9{EC>@eQR_z;&3(JEM{kh09LI_wJs>vpm0! zes|~n?)CV1(O<~D&zV8UtM_LOLbNB&8Xou5wR^cV;lB7J4S{K^$E!?OdehK)xy%{pBeH^nE<)=e?-(UQ5 z%g{i41UNR|n!22xHT_Ko_RQ_o_CM?o^9RL^GA@07ee$4Kz(WG*!N?S zCoe7z67YEMW*=!D>V0WM^>Y>vUI>)ER3c6o*T*N#Y(DW?b&GkYHF0M|kxe{QX6OPU zzBX3>D$|ewU=<}_5cNd;NdVzE7z$2a-z~{-$ z_gfxa&-dTn&)c2vx54k1ji1X+f&QfM9g<{uKfwaT-fsv0cZ07-t&r=Hy?bYxt_bn~ zK$OPz_nLtJ_r>>XmcU09;`b>c|HoP0=jYDn&%^cX&i7fJ|G(a^r`F!DNvqqBuNA=E zhQL?nbMG@|DA3ks`QB}O_s-Xff!|B8fY&$SH#F|O!`DlE*Yo$Dz~IhyxWHT4&G*L7 z_6gt>vGodtM(2Yhn?Q~-j4XDbaDSz-GNV8Fx072d6bdsZ;t?SB4|y$`Fm z2STi91xD^IRcKnJ%4v^RnUy4B`9|FF`JofGuFn2tVSS|cl+N@ZKI2WpkfSnxrX8=} zRkvW(7(J9?o5F{PZ^;((_oXrg$SaHuwU5egcz;y7xzp z&o&KpY>|n8#tFd&ab66fuOTR!b;|QIqDTp|@@j@EAPqYbVTz1EF#n`LoFh2~dq_PD zf|MY0?fz6hBr%(#$L>+5cPW3A>VBku z>jzn5Rqyk-OSOdH-2fT!1^a9`#=O=T)pBqkKcqe^_=|^T`B8OkLZPx%m`u;e)JOa! zoGC=R=^0TJcZGFF``i6!{J1~Zgo|1ccSPl-)Z#B(CWN?H*gG5>90ME*h=LV)$X?FO zC5^8{K!h;qCY|ToW6~{j*saQ};aFgqCa>c6yJ>VeFg4@OKO&X>U=9n+Gg|1eD5KmZ zY4|n;`L8T%c!(db-y_^kNPW=DfdJby3oUWY{3-5rCZSiVBEcZF*_|`J5NJF{ej#le zP|&?Bg?q#Z(l5?yUgFrzv3Wt% z;!o#j4{R+D>Q{W|S%9PO$5E!1JNU-Vyc^^ZEM`OOayA>o8HD5rBOsZSq~guz=H+@~*S3aX@L6;}t9gNf)WCaOy4SXi+6njVnWRq-QJ% zu#P5^ZhXrhe)zbTiCGJ|)bBKw&np)~4=z;7KWx1VaBpsJbk}`6UD38XT5WJJE`S-V zzYk)91LSxIs0~ZM_P>dmI$8uu;gMa@x*ARX&EBHYKCAFMCk=15T2`;zo@ns7?Lt-J zFN52N+XQJR9p9I_t7j8BwLv{JTVH+}@0M_fZBY85YR||I8RMFU=D}>7r(-Ck;QpP7 zF+aMjg%C-M9e~vBAGILjg3q&d?mEN?491UT0z|4ohKg+ zgZ6bEEh6y3t&B|3;Jv?)zyijX$Bjsn=%yX`cV~d-LRYL!3_sYzUu4goR+y$y|0!XHKiBYH zcNdIt4)su#6mX6htNuC$Pt_!}q*I~Qh zDdBrjw2*~erhJ!?=@ENq4jfm_^KAL+6Z#mAYN403H2G$HJh59bY+aQ&VplqH3gAkq z(2@?_pl6Z{G#-`uAp|DCPiCcIOA>0UAbh7UGA1J~j%KJZh^*LQ2X4(SDHJ85A=A?D zY^&N;m$LR91}tG*oH`-{FY}9O)IbH;XMF`ja?0}QoO1_`kEe{eU7tgs+x5?bZ)x3= zIVF~3gkqYy33kgBJY=sGV02o(N7Op3jCa{|c(&n3oCjwYi<&CbIymNLdvpB1(^Mm z$7H~VMeN-~w}*%R!;By28xAu@fnhPN&FJlwE!AYQkf#$o z0zLT@!k7mVxRn$2@{LT~1wW-OV&jn`Z zCa6!JALJ*uW54k>RNkZ+DyYr{?{PK*>pET^{)NQ&fiO8ZsxB@+1n5dZy>fl0aHu}C z?oE%uk^*ZxcQfX_IwHJiUD;9d->U*wlXT>S>!6a#%ldR$D3z1I+s6WhpB`%GKAbnq zmR)1bKL}2T&<(nd_Ue{;=j$MloLp^{Z7W?LPax~E7e^1?R$d%!#kf9jIsU-IuzV|0 zih?WDLQA1z@5&R429a2Ix*OLIRO11aj+=7ls9+ZsG-#{QfnV&zoh!n`2qo zxc`DxDl$p|TQCo_c7AH(Hu?_}+0W|0qn3uk0%2Q_RoAVLhyT;a7w1{flo)K$#JG2x zHc?RO+cxUB-2dNHpaD-p$-(7ur5M0BO@J+3&AnR1szo!x1;9H1PRA%3T7ty0wzdY- zhTw~YXgRquNiT39xXUX_N}({l5ngJMhr`dokNg7FGoYD5`=K(A%s?ZasS?A2o5XzB z9CjkLADS)v2is-@!Ca=t1xf`%hv_1^yW(Xa=$TrS_ zMOw+3v_*MoXMjW`@jyXtT*rz>Vk)Y6;EXhnBZXi1WRxHLgMN?-kM=KX;&KuU zf7vBL47O{$UmpQKR2oP`AL1{l$vjR8fcyGej~_;1HxjO(Bv4mdsIp_S6NHx8)7{OD zI>;OqJppnaCz1^QW`-yov|dgee6io5{xmrJ#C=aGNX10zIJh+1;UH+q(ETK9(g>}f zT({g?cDrg?@_DP(%s#|=r5tT+3@Ueq))rXv1&``NGDSMs(2B z=6tanDj9&xQ3!f05*VapWjswkt1}7B{pM>TZoNVEm4#)kCHNKnOS_r^m#4E4bjFMgc~{6J2dHDBq`!u-P$lMR(T=6U-m~;&vdf#Jd;gGaM>zxvx{UovHhF z$9L#E9U3>%Se#Rk`kfxF;9{}sQP9)aWdIPsQ+3nPoK^9ZrP}^msQJBJ&y}r>U0s*f zV8xRI;*?(_z}rs)$m7DPzw}U@vN8z zrDn4S>5m|R$LsJ=P_U6eXKWKkp$l`tsYn*0(k;4^!4k9z+O-Te`Y$2|mBjbt{SGAz zu_aY~(ZROCEmkA-Q}5$QUI$suK|t1tFFavZMk;-+b>pXQ(%7yOb9KKMsL))$5)%tp zxa`)u5uE9Sa{XV_KXlkBpJY2!j&nq8N|EB_HG3zCj@r9j%M?xVsxS0(#nEL_2ao+E zotWG|f|50MOAs?RrgJ#(xbcSvrr)cu1tK#?KbK7@^f(rNOb9(*Q#HXiv9 z8;Mnt8ZcXQvfpM#*mr&FKmhlKhoaR>5A`fG;6NGy#w4MoR1B~b_N)vh$I&t_1tOV} zEYk8he#1bng1;#ITE1X=`KC|`Y zatjQCU`mP}o^U=0k95I2Oo*$h<G@sH1KxK>&J}d)y~%oNg{G zO{@|uTg?81k~gYm`G*~^*I(sAsv>=j7{|Tpf(SQ>>P3GBbF))n$omzjqdVA zkWqkgj_=z~4gpNxl)g9m(Y}u@lVH@n4-!UimvhHMFK@vVj!OdJza^lQoA3Qd<#!!( z0Q=>$h&KATnkbdVA%j+W)8_u+@eIuQWk#F&EV1O?lso?j;UN--r^QKA#gS3zP z*|sU<=z!#zbdhOSCnX8Snwf0Gje2kL+yIMu`hHwD@BkoeY~dPbcUH<8zLMS*Bgd^Pd7m!QOMV@in3WMH>&U+L{J1{jN(-*I-($eE-`DP=HpTd;04Pv zX2W=0`|#OdZRXnqoN_km1|W`^kSq6mWMcNxmKOcXE(eugQxC~!T;3}(FQpd?si%EI z$^|0_8VA&IDMPEsfd!jpH< zV!7dzWOEuFJ+kHZ3|=g2MeKFb$Q&I%mmKh*hqv)`%HH5~ykC?1{5r0;oW54u$f`kFXf99&BwuA(zs zpC^Gh84!5^nefX-x{1Bl&hbPm%ytou7@@?IS4WwXA}QMZfQW*~+5`Ffo``Z>Z!M14 z-~o(-@Yn0uk!p|?xqysyBV<_7ub`7hJy}cU+vgJ6e{ros{RPf^QVHeC1V%K1k|1g< zDFQu`0I)&{-i zWa}%mp?qTmQohJ)jFshBcb2O+IUV`$rGS@tU0DN9Z0RctmkMnj@~g5mC4c7))aYOi z9lU4BwU{7cJzGnI=Gbcpx`zX_b^;6MmBGJ$zV3CepUDRs3ULb?S+vuWVE+92+@0Zd z1o5a(84Np|4QVsNVBWP@C6@zgO^m@zx-^a8gyGp>;(8f{VFyjnSvvy!J*48eBmi4& zy$WJ^Ji#BxYi3y{z5plfDllPP#H(Z)x7=MvM9blyNI|l9YVMqoNtmCsK3uu=bDQh&jF~ncxcT2w&-|kN=Bt z>y*tgCD4{}NtM!0>*Z&$56y(0*_(&pSC@M|9(n3?;XL76)FEv#S=e{N0)RDsUG2eK z{9%leP;#SwNq4ZqjX$(Ql~0WwQR<$|0+a#nrmwEmgb8ryoK%ng`;(fb!#z_3Th*Xs zS2$SEMUE;uZ3GeJn`mgL-z>1TvZ0c@qD%FmV^L4_P0Y~TbM^f z)FIlgv)mNEsJodQzNqjq4*SdCclPG~Vc248JY=1ZILe*b;*e#M+%vHxNSBwx@uU9{Uv8+u&~#DX%T^sCkPxMKIEFBfqe2)4Sbu1C zOf1^sG>tKHmy)jL?@e{ub{}9qArRK0_5;beD~uRrN*TvI!Pkz4KozQ>+N#YHE}D6; zuP@W|+HUVpAAs?C+rH7!_RdxWiFJQ48pz0ob&z}CgaM{roA|~Z z8D8P7f`u|_d59ObE*5)H%4t4vhw6Bz!RD{xd3J@ozbxm;>IGI*LIVm``5(iH_J8S^ zVM8nrHfEfG=As8MEN>r6br{SZwWBw`(tUE(M9Sy|$pDe~AEp!4L(CU)cRIE%+oACC zJD@d_dB()elyl9_|K3YXdaBi3PdREgk-$Z={LU(h^32a3OE+cm;xQ5!5a!5)$CYXY zXSlb<3G?u)_eVn?axjFW$A2>pP~#rS!h*+N`{cv7Ro01+LAq3I|I3-bXA0)OdgWan zN*+WvZ30L|hQBCTUYiCrNV<+#!fX^!vn9m4IXj#tQeiG4KnKU8I68}(`r2)suGv0o zCFz^~qMf8sz_inRg|jGL)l})ys2$;wA0gx*#zkz``qU@PnAiVX)bEqs;2urQeSvU* zeehUdPiIoO#@Gf6yXuOOaqY)qqa20GuRad89S2~S6@#z~hYQQwm04C%SaPD|#Pd%t z{1XlAu6;NWwuEu+R1f=M@Mz)BuuAJQ0}7MQsQ4%v5Ew-&o8{>`9Ha`!fQ;k#e{zNUb4oywgXsb)>xL)lXYx3L0+4UDVFa zb%oJe=P{K=KXwxUGtP=j@Vbza1`_B7A)#Jw(N5P48^J0`>xkvD;Yan7#gw{Y^lu#0mJ_pWmwI4r9BlgU z;%O%TUjAq!ZQdiigJNi*7W40#k{@bA4=_8=4IO%4`Nw5-WfQ_34V#CC0=4@EM=rZi z>zy#fx;(9opFC(GGm!-kUSR@!I&s4{@Sa?XwxII0Mghbidne`=Ht%Zn@$;kM{4B_P z(he-5E@0{6hto-*u-1(Azde2r*Ymu9S5i3Cjdr`c4omOXQ5+IeA=E+H&5SmZkL*S7 z5#kY~r3W&Z){Be`cn+s)&91WMEquaijr5`7=Kf_J$)ju&Vw(o>Fa&-aM)QB8}5V@ zYoPx~u)V|evUh&p+3iqwob%nP)7kIt!I%lwX}&u;kU`sN9^^0h$FPev+G;K?Nz(l0 zr)paR`K&?h=0N%=d{YeA!EFkj8s61;)=(sqh4gmCZXLsp(JiNv&*yLV+B0Y1jNs6| za_agxTA3f;bAEm-itXR{`yM~wbCB%nvhCLSZt3DS?Gx#rftpTQSv05Xung|&+G`1Z zwmsYVxVu+rGUC&zkhiU;*WTIK=ybCd+)4ASeuD4w@9*{Uoe>(qok@v=u~o3*#`{R_ z*BaZ@!19y(GxehR0(i(Ih0C+hys0}=Y0ZyhcJ^U3D#_r7DPfmYR=I&=+7r5z{QcZk7s-Py0_E)@Yz}a;8WVT zoV+EDJ4x+!F8ToA8sjSRzS{L#-2SI-aDxPS(J$YYY~RbpdB*E~J8AKLkXExSR4=go zb#yf8zP>~7E*9LyaiZ;eXKiC5HVgh$YnZg*o1`5OyLQ5(`Sx`5S?7V!A~9Pu|5@Y1 z(8|Caes$DZvuJUWx8?IX*mR@m`nvnrZwyH~247U%@R1Bqc-o6`@#E&_%NY}CF&FLN zA0%4Vx5D&;oD0bhDPWQKBoLd6kx*yUW@a{g|3J2QOiOE?)hMdDk|;8|*x%?pTf}4t zax`I|%p=blvyx_BUqE*vFRJZ%xd({GEkjoFCUn z;LTuPRxS*HSmKfwC!r+nTB>xm+L0w!xGD%s|0`OBjo}6%Xd^AeHKV{jOSaT|CB(inm2 zl23~on2sJrAbU-X@n5mE@x!3C<&B!){~g4qR)T-GRB;rL-ERBs+I`a)a)#p}{_kxt zXu-Bms@H>C!b`7++`KxYzN)~QntuX&m9VAAXo){U{FIKg5IXaX|5ztMeNM4NTu@mA zQ^FiD6E}kNh_~VInOHa!yb19KY-6W#Z0A(0m2#yd zDz(`)P1)AO<69Eu%p`uXUd{znR01t(3WoB{uR>qmh*+Cu{a$h%w_`uYzzV4d(FY0+ zs!XmR!FjM>L-dB%)Ad{I5^<%stP(UqqN$XY9ENL$I$beFm#``0+Lt=pu!RBXVw@uY zqJ4eX4v4ohGQoYP@oAF+NT6k@TA_T}^-*cu^(=6|>hl*_#HFKOA!E(pX->FS$c5J2 z*sdj{U&WqcwV)OW&QX2o`%>W9j94R>9d#Ax30F=$J#!zm1HW+Mto1Y*PAeY3KCA5O z(gOds@q+>P6uwcC4oW@2Ep0TPR}4@C`1FHP=XV^WSzEDPbnwqnQ>N%2?c~vdX~cn& zf~XVKtXud3)}U6kL(~a~>Dg6L?|sut+Y#Vu(FhxM9b>oh8F?{E?5sy}Qp!;nP`wZ6 znL_&Tg~NGCfRY$Nb;J%d&*rFJ6DK&WCUCm`F?+<($ zu-KLz!w~QS)w9607F=Fdgfg!JN`Iy-QA&6k z9aLYcH;K%kF)E<0DH0-mS2rKXRhcKc za;}{~Na6`>D+6l+CT@ubbETf@IVe-hlM;lBqF=KcBwFri$gockc~&@cd5+E0wvuJw z-h-fls9xyfGs{rhW2Gk#(C^~>yj-YgU2x5f$Lm1tf3GL)o4SjT+3SF0fyEV;*o5T- zm<$(M2usf9OYa9!D;#&KXz4z)Y$!|Mvh^Yx^xNVDh0f>FN#Vip$5Abb z2EZsUNSSGq8&WQog*pt-5I7_b|K^HJfVcbiZfA=KDz1>dU^%kF?Sd7%ma(tnFf^#j z%5w2fB_jOA(T^+{ko`N^oQLhq6WMEbkhNcN**r=?eTe*R(Tv2;iP>A-SF2A0(?TVu^=s@r zE-p*(5-$B!FIiWuz72c_GK$xw>`hkwf6hy_&3QR$bljuofD~-DuiuX-uVcjnFIm54- ztm5wv9j|;pb%uJN4P~BMRq7R6Rh!#a4{oI;{YohFL?<>yc@qqmSU>qYPi#>_Tp21- z#+E#Kso=a>Kr1@}M^Ja{Y-@0E&P~EyS8p|-U1(Bf%8*s>CJf6W{CGptk|C+3W~4fJ zca{;G?N;%Kxo4Fi9>@i?lV}}2zq8ZH!S@j^b~VH91Wnxi@%lcywLa9Zt=9Cl?^Pdh zX20oHl~BDmO%`hwQ>8~TYT4RxWrj8AjFZ5q3rPb7(66(N0bX%%f~bR*$!Ch`^#&{- z>j?o;7e9^~Dpa(bGPOAd=OWqiKu?wL88eRbMnIHfpIypSN?(HI`N1MrNuO1S05W2X zBmFDYx%Nb}L~Il8VqK3HMj&u0H^C&{ zv_BaNpcyW7O<+pIOBtrUEnz7d;^_(y-Ivh}ZVYU!WJPJ(@d5*_aLp#c*wxRv`yB{t zDrF=Jwnz6+zO%Yf;q&gw&o^PhHV4wQZJdThfUWLk5)$cb!#l*;I1YxM^_<2fUE@h5 z?r{9t^j@92jF4EL4E@fK-M~4Y%!Zs3{8&NyHww)pmNk;?{?9UKO8-8EiXEa($0jMYd zkc#@<{XM{htkd6Df`Cf%107I1i&&UPT5MKlwpJ(fN{DpTwmB=fwku#xL#1 zkV>dM+!iOIf>?e?)0sz3D8ZhD)NQfHS?=sEDhw@2rnaQ>y_guByhu;y_1Z=U6AeWu z<6oksGrnxbEGF+*C};{RVay?7TBvIe;EbD#jh@;J`IV$n+V8<}-uuQDjUk&feU zTAjC!66WayfuJpJjo~E3!Z_D6q1)qZ5K)v$u2GQIh@xTeYy4V<5qTPP>kd%d7%wk@ z$m@kbK381->~J)9s|UdAuFy%N(UWd_Ejrc!;(Y_M&Lc8S2U*?`VLM)jxzQRDuz~xY zH5<&(+FL?GdZ#omkH+Sm+JHV^P`R=wDO92QmTgSsQUy$;DF`VaFn)G0OtxV!-9KSn zr1r^bmqkPle?<~aN#3QD2uBN{)6>fvy;q<5_v8oAAN8ExY|@0uDIJUvN#|PNs=>-Z zmx?>xIP;J3^+2iYDT9Tj&?kTr5RM}j$%{R&P`b#l7o5H79jvtoBIg6Xg1E)~0iN#4#@QeBxP^q3(^hGJ_ zt_wd|V|SXJiCtL@A9IE}i@lmEr|@N8`xrN^A}{e#w%|BZd_YTrWGjhRaHI%gcuIQ2 zOHm$N2!_|Iy>qb-+ku(Xdh#t*STBkBNRd1u81g_r^la^`LaBppM2DgdO2tBayLAE4 zl&z39#4Tjg#H!)cf1{fS=ysy|{lGIcIXM|a9$B|C@13!EzwG7m=kriqtT&gn*MPSt z*t__6|L(EucNUN0-Pf|hKx=HWW1Hnenep_N5MepbpVH_YPNAPl{A08f4VQ&L8I{KM z?1c}Rj|G9IJH-uL&6ut6gD*rv4AL}GiGjwWGMNEptodZU-H~RB6a3C!xio)=HuJ+t%}v)V zB-7%R5^6w{Ey21N(Cx_>A^s08CN`SlSaEOyjs&+??%|x#Ba|?ukf@4cY!I?g#tvh~ zN5~2G`gS^<D=)cxmM&B4Yi0OOaYJNx}^0K_?EO!yTi zyo%_X3i@f&p64-l)?$4F@RvC6LknJszyD>PO_e-EXp@PDiLpwy?ASSN7JR%dR9Ir3 zce<-EPC$}8C0JaDP;!0ZkoZzI=#vujBRx%K4N*Zof`o}QN7htJnM{-Z09Xs3nOJMsev#n68b@k8JZjO zncO!kW0&bKD>llZ(S2%e+V;{kG3y!<)-)lr*@O}fq_sbecqG?A{uZ`C!IDa};FfT} z(oDPv3NIX&9u?9EJwgp6g2|ZFu8jNz>cG4mrq6`HfL-Rr{oS>vCyYV2A1$fND|_G0 zP8UZkylcE`dmr8;j_e}6B4Ry2Q($9 zDCiCp0%p8Zjv+;U*DWoop5UqF8BxD`bF~E7o1}r!?_CesP^y47GpudAc?-5Z3z+C% zHo@;lK>GtVQ%7qfK2H{l`PoK&<|M^fj<$i|v-(@IZZqQzRVGO;J4PFQ*dzHvvGW17 zSM)$+dN+=-Xi$B_a*epawucKfazO>RmIk|n2(~0gbkpkgzspjVwH!+qjQqi=>H-f) z9&pc$C-zS5CM>5Wvp9iu&#ctgjp*|7zRjhZ7abkhvA|qR%)vvp64kU73HC;Dv8299e{u?@O4(D(Cw^Y+wGtOK#D0y+FRzlz; zz~z9txLrxcr1GkIdEfe zY<#O6{idFY3!8m8vz*q7F$d5`s79D?+r)#g5M>7ema-VzCs_QZ5~&&ip7jv~6U_sS#w7Q!nu#yVwN_8N`a3#&i^xCnj3 zoaK$sl|lAKf=KQ2V+~@P1z@HPT@bqL1lTj}TBp(rU^7DGlUetK3sG7t02ui&eB4dC zz9aQIBTV?Zfon8vwED6@_skj3N#nY^3#T?B?$UADPt*3SWq%&-7N^HyRs3}wujj4f z>-I!U%Ret6HkZ!aS#kh-A^TRy=njZE1VnHIt~@MD#dUo80&1TrK3KWEsJczDj$W~6 zIsw@in~Bm(O;f_;hbIA6(-Esj>5P!4 zHxIXOID`Gt8lgFK4#YL6ru4=73paV7CuHuW^6O?L(1Twvd;5U@k6gJHNGU!P-S^i7 z5(vl;BMq4Y7#HAeYW{zDmFKy&s{gV7A{&)p>A7sO-hTRrhRG-BU0?pPv*Lo{2n8b- z2}GdcO~8nsNxfmcTMPe1VHLPDK)4qxFjD(#qwyL9?8DLG=2^P4N{^4oOC`dajiQF$ zVwSwbmi^b{gnDa|1vYXPz>bv7$_Ch#w<_c~NzIzsDWb8)Ws4Qa322-`T{4LyOHRcD zW#*!htMhLXaJws-RFzl>ca){@E^_k>PR3uk=`skQN}2v>St~8ZtAL&5GT*`TeKMW9 z{ZK`3?nsJcseYM(nj|qw=jVli5s6hajKc)pIaVf_A?Vb5#i zARNLLUPbujV6Dl>*aUhlxi%rr!4FFd)w>1!V%iN?Z_CYzg(yELT-Z62WlEOijyu1N z#T~)u{5*%l3AmK{yXlDSRS2-hUYc+1haj&A4&N9{T{t>P&u$L2WspndTfMHd$~lxv;$F26;PnAf3yYtk?pQY1p13Lx+0{qRK_F%e(lf%=U%v!D6F zY@F{mwa}iHPl&`_bbBFe#eLk5!$io;+ZRL=5V`|oui~t@2-zkw1pN7^_ptJQM%)vK zvGS z4<|o-0uVFe8S0(?J{=}l2O{rv6Jere7KbVdJKc8tczbQU*+`-RPNxi(EA-6H%8tH4 z3o9<|c(A~6I&C-@W>+-t#fra%I;xJ$t^niBDN#)Fe4}ha5mW)avE?7NzHDyqLxgzk z#u@O~@;19-_L$JJJ5;8rEXp4c~}q3{|`ArZ*+ zck;)G%{208vk>3~IQeJ#eQ&|?a_@Cz_tH%K3>unXSbx#v?pPZs+^#?q=~I9!2f|Nquk;Ep2%fyxV{RSCwEW0C#n^w~F_4eX?hnf)-EJ+h6f%Vkud%qC7XVh2h z1emN+u91Kb*@i z@m2}XIH4`v*x2T5bP!=OD2!*)dC8@W0akvf&0&IRiph02)q{eiwe3Tp#54$44GYj- zJs}V;VN{KW;0|mn#R2j6vjV@Uz$o(iC!;38+jngeT!HhOcklIV#&|b&HY~V3A4+V$ zK5`JrHRsFnrH?LP!hYDH_>kdf+}ynU2=Vd6q2($BFjyzZeEk0R^9L61ksYEz0DN9= zS6A1MCDQllXdpMT7Re`2@f4C>$QJ}BiFDDr)~iO8c11>Yq36nFPAPVjnoAYL@A`(B zUlwY|$Agl0mDx!~a6@HPl1Q%+^3039AVk6)jwEp2=YD5EDN&O)iT}`q8zvFltSth- zJGp^x-wQdp6jSgX-UgchH?lVPfYlu9PwhoHzGo_~j9Yh5R+q^-8aa@ckc^F0BB_6F%xgaWpVajN(UV<-wDG=7Kp+9qe`{_75iT7 z+9k;S*N;&}a15Haubncf$XP3OJKvSV_K$!r`+mqSu+6yM#XG z>}H{oy_?^ez`S$D<8s8f0MzGJM5y7(1U>$AwQO<^GN2qD3~a2FiVFAwy_a1>+Vj+S zBnR-iD5CG%0&(6_V)cMC`kvWdp0|Fz0l+-blWgs!VGWO>i;frR#r;yX_T0an3n*;k zS3(42eH$uSnO>I+F8SoID7H1`ioLnm>eYhPm_|nmi30!*+56Thi8>2!z1(;gjZ}pT zn1#gqaXcdc_w#;N)Q!KiT`Zr2x(G=njv$@D_4w< znc6lv7;xa8Q9mAke-_PrxQ7HQR>I;zrJ%UqO41Hk>agZ#n-N`=R-V(3Ku&Y6F56_{ zWhb|5iF%=z=+@|Qc%CK$EL0-f+&h2T(T$~62Uv->b^^$;qIq~^ysCN-C>Y-zjVBRc zSXs_e(>k(;RDyO`fLrqnou43MoP+c&4NJ@LsX2#WseOQm`z z*YRH3WRhg`igGoh`M9$~U-!r@&%36}fhNYT;CYaPdesirK>% z!cSxN%Bf(^?WIz6k~q)|jS^-dy)n0pD9&W@@?VP@8rMPj)NMR*I5dzy46u|{%m2^$RT6{*>gpc)g%<4EZmr+FnOO%i`gQ7>)9n-K#M zF&pg~=ob{fUDJhxIUe|wQvNkgTCc_rP{4@ga&xo*23USWU_2)JF!!Ys99F7XbfaGQ zi9{CPn*Pqpr;H_q+16hn*D@;<>5G>x##p3>;=uJqNuicRu!*oDX{Wj%(F40-N$fM! zvP?GB0)o&DX{t)?LdmnP=r9Bk8_-~=GYF&1_+7b-gqrHe3JbQ1qlm#EVi2BKACnFv z!m{)12GE~@T$pOZkBg)x8dDtkrndo?(##2RM(qlKTNEPg<1MH82r^WGh&8^2g;R|v zQlz}AsHVC&2eFn(Kr0i>XL=-o(+5*&^ca|tAObzZ{=J;52evI=f5wQB(51*_T;_H7 z#r?nPy6(6d+c$pNozvc1QQ8`^8nSXo10g$|_TE#{vWeo=F_RHOLLt%~Mw84`GBZ;s zqvCfx&#j#MJpKN7-}m$T-Ou;h*L7d_bw5u>=(o_1`?n&E>dxCgjd>aRv?p=q~sx&A*H_m0e!~SmiI;d-7QHKuLA@Z zo=#>Q%X{6vMZDDDXkCt+rMcGlS+n{URfTpvRaw0=bmv6Ywv(H!cgOI#FQw1hvQ>TK zf=QESR_EIOnq9MEaX{0dbZ>L-`iAfOOcqrNp8UKic2ff1$EQ6D{NO!VarfI#a^I_b zIahw`Q$p608@dH+j3=(Lyl}MV=7F6%UN5Z?N$Kl4FP6SD?Tm=`#VL7anrH17$UHpn zef!uM2hp#ohcn&xAJ6N~9pB<^dm|>lhY`O&d*;C@H_fH?nXrp_SHBl<-m|6AX3VPz z2gkLfd#p@68awr(RRU8h=0?M!b7pp3|2>}`)F1UR*~`E;qEW|gVa&M7CsvA5VWS4l z`I)YaV!6)tnOktH^11_GXL;fSy+h+t^7_l~zMC9#pM9mEH_ztq-Q}A1YqG=3o9wGz zoXCFrangtT#ZxAZ)^*O7m$5Zh^t-bxZ?EKR+4fUzOM=-+2faJ&E%XxZY3$ipxUpoL zTJu3irt87wotqe)i#|<=?HQ%-n55e@!-4Uu^{2$M;)GctZ>!@AC-WT-6&sb7=M%Q; ztbk8{`(iOer*Q$=$I?^sx{}#bb5*4KYRAZJQQUa>$*MmF&I)f!mtX2TE3!VU_*0F~ zaSyo}I~QMY+*+|_TS!#GpxTRDL931qqa(2#@$;`3--}?pMEQw`V^d==FWitEH455A#EmRPO*nkcQf;$TUFdg_K+?{m8YbT+-y6})?0 zVqme3WUh{o(H%x%qW6P^h-n~&yTSJCVC-7F-<403febNoKbf#^#vnqR$ zs26Z5XV>TH#ZvK_Wm~LIZ=ZhXxAxmp`}V~puq2#S*0lAWa(4H>k^UgU((cj+%l_Wm z0xq*2o|fr+sr*&r+MNCcYhImP>bRqC?Wy*?Hx>1dC-%uWiWe4qx|ng(=Tnx{^8&x? z)vgBSMJr|MPp*(M{*_3pmRhzv^G0WD>8r4$PPG=(r1K^!@20+r40d^P;0zKqT1 z^m4Kg%464sO{~h3*MxoVO)9d<%dYa$xjH*1>(S5L0F!v;m~&lH zMT%-skLIY~@tCvnOXB)Jeowy5pR~Y3O=s;q8SmQLhx9||EUu)T8g0!N>@dYQK;qB9 z!0+4VnG@d35NB?WQxmV6wy0bBEPdzm{8!HpoZ77HvU2*{gu>`qmOJqs5=|xl1!WXVNamTEqD|Q+_IU+RezZI1qr7~_A=r)^ZCple^DRfwtb$O%m z!;?`JNh`NL?}#n(9yO&`P_eG{dGEa7Aek1+-l<;S?ek<}=B-q_ZQopAMGrf`OG&)4f}NV7+i=K6zj?n=8-tOD{Y~J zj`lh4xcw^nZM(gvtdk#z>-O`gF_lgD;QyuOlv!xM-l6%z=J&l@UMxDav~#@IZnJ`d z5cSLthZ<8#Me5?;>T1)b70p!fOq0~HZu5yBl=$*|+}EG2)e%kFV`P)N6g;2j_CI}n zD*Nu(52ofc(ZfGK3@%Imu$Ra9T+M}_K~)hO;#m<>CDseZ9c7+3&dzR{z2#=^-l@ws zCft-%csw}c*2S##`r~t2qW#uKK3eu=>%E?S=7)$Azr&A3wCc>4Yb-HbwD+s3C!vU$Ggc(bzMwY9JefIvVyA5C0_q%v9oDs4rVF5 zP%Qd+Zm+;G`i7)GR~S+EtR>n5laKpcWx19wHOktsFmvLP1vB4dY_C2RJ7vy0hGNRK zz-W5WoE2VAaz1P?WZz|YIGA2ZvAVQ9xwg--sr=IM-p{VO+uHXnv6>qgkubj?-DlFJ zZmXi>@yT-b3B}TO2QIEDnq7K$S83uzhAE%SN6#hYHlv~oS2`=$8#P=KznxkfKKisw zZAaX`r+1Q_$2D2gCN<>0?iknb(d}IMk)oY%@*Lv)Cm0o!&7Npu&R@k?*aqm z__1C?mw@m(+5&PIMO8J}Xp2Ye^XU~^aw{%muaOwU4aP(McO%%iA! zR+nrNJY%!_UX^@Hj;*YgONU`VqweZ-Rhd)lQAWxaLwg<<&2>FzQ@>F>Vddjel`W}P z`92MvP>^gdu8=q;KF)mf6qAsy_p_g5nNKM&KPTm-aN_i=BV{M@Hbh%%GkISO2z#%! zNVH&o5B{=u?zBS7?cUA5W4p`MzPGivs_wcu+xfi0(=Q<@Qw<#!p9wx;^k<;HbaiP- z?DyxV{C~+e)4MCImfe0~sCOkavm=4kH*LjomUe(bvi_mCGC7{5ae}h^R>Fd8u%t1;0dqYvb8|p@OUzh9dCvn-|iXC+eGrlX}cF_r#_T?WSx*U zVa4ai-MtOG``l{7$5$!q+_&0-T zHugY{$Am>;p}&^>nm(hlI-M?2GTXK0hTbi;W3ESaZ)un$xlX^gdTCumh2%-E3{8HH-iPqh7pYB-h zdvJw@N=dz8+HzmJlTY=vJ2N7lJ+yE5R4(ql^QqML)fKC5Xx{u(wTG^lwmz`1t(ev6UUr{%xxC%IxnY`i`i5cE z8`vjKCRE8dNX(tR#QEGZ+k2}|uA5SQ>b_xy);l9H_MQlKoY&7?C+^4c~VbBMDalvYNo05rUbAo4Ugwo}s_|5>=SUgvC$Q=4|{oKtzD<$ZpcR_Ci1 z>l!afSv$`}bIWk*PGir6wS;DYQhzEp-bl+tQK9Au;;*mvoO+FVXENI zP^q^}K6&A;xr|HjIERc?2kcM9wd(DPsM&U=!7xoArD2?=yzBJ~V=fBc^^mNuJ@DJ6 zY<^wnisciR*ZEscyf;U1LWZ{8EC=SpR<#3TmVbS6z%% zZ)v=_)yi^|-&4KL;rgT9)lLq|58`TywbT7Z6-;!9c|XUQCgJglZ_O3eTM7Pi`*TQ?nv@r==8?rN>xWhvq@K|MiFR{iO< z?|JRx+I0F_S|*FPd8xcgq3c9FU0XZY_&9*i=#%xzUB}}@HeHchYrL>J>eTJ?{qGL6 zS~T}H?A3Xm@7>t?&@pjKJl6aUq0ho4^ICvlAupYMu3 zwTib}pOv_*uW38gBUYIA)~(`5h4JHrQ2&p)DUnY6p6Q2^_X_i0A0ww1l+VNJpK0@B zzlu+n*GJdmH+mQRxzjY8_mAiY5h<;CvZWg~xxDv(cT{5T7rU{&6(O_FAAQ+dJmszw z?RR$nm&{_zC+zk(TE!TZ+-5 zpYU8QWYSW>eN!v^w@kMZi+|^NEq?kVwYTRb6TVpe$P|}+7in)b?&wRi){g<%nJ@2p zWG)z(AT%lQiDpXC?WKh2STVHnD1p(uP;xB8aRm@*GwPkhVjOC;0k2P-m zY}siU=WyJ3w~6h6eXpD=OBM9C3FvQf@VuU1)G;pbPuu8qlePM0Mt0vTR0teBX7k|q zej6{RLC59xSx*w^Yu>JzDSP(lv}@bj5^Sq#GtAkg33`{~g0rKyJpA(U`Mt_fMlVg) z3Dj#o$or(3y)ogF$DitJpKj+Hxcn*Z4p7~7u(`DFX;SW4k1ye;c8R6NZN45MaCUI2 zSZ+*NkHcH*u zLiTq;?&HH-Z@8o{TG{ihXTW1?k=DANKhv5dQm;)udTr|Tygpi9kPOXmT4VZY;kEai z!vowp;46b~`Njcmr|kj~5~|CL=U6^x1$VkF{tz~+Ir7leFVBzozkjw^&-$$Js#mg2 z3i0>aW?pO6R5rRt0pfSXZ8izCuGIV z+SIQ1uK9+DOKS10KB1^HTa9M2P8(dDwD|kvZ!0X>zeOr{ZxL*mQ2poo;{kQ?eV`*q`36OJhJ|n|ZLN1upZTBL^7ct| zkWr0Wvy^;{Ok{`$E5dV#MrsfeMME>#gn2Fau!a~|eO)DuCWDD0RLtIy3&uRkxJH;p zo?V(t7o4^y%!HXP_`<{nTuuCgE6nYshon%!%x31HEn-dGIgGZ(?^EqJ6UFu@rno1MY-cfobIkaO++a+`{T#JJtqeM|Hy z1k)L?4IUvs=94gKmPfFgXGGMH!!h*Hx(wqR@KVZjW$th^T#T5u&fpQ}loi#TXP2Pv z%vyyWc|Vs&lJgPL3Pt>XHXQ~lyatuyVX~|MKh|1L&oI`Al0_A^jXMh184&%r zIlSBv+qitXByM@5nHLPtf-R0iERMk}&+;KLa;$(5A67_kSWqxGQ>54Ve9+4$fP7e* z73514VD2YL^@3-`M_K`^vBL0!W*94~j#Sf0qy#JMUzHv< znCEt5=I`D2s_%p1^`M9*X5^MbBvhUi5#|{l62OY}3>#v;`u*P&UJkGl^mD9AHlh={7m-_1fmMxSZiZ#7L62z-&_4rPziBoX$b z6qFL0RhQI9#>=^DdY%C6fRAL5H3gVlk4K1p57yB zF}2a+=o7G7AXp6##LcBOS>c0*|yWtvV0urz7N&a#4SPq02Qmk745@AfP!(R0+^Y1oFc!IUIko^oWj{t)w zZQ@&mnSYswK`EK@WIwz-3r0Pw%MH8w3Bi6{hYRi@zajDUi|EQc*V(3}VDr^QbSbXo zbXew%`c1;cLfl3)`Kyej^HYiX0==0smLw@W?4y;iJ^rafyZ#VsvII`4U0t9AB|{US zczk=%5v=3>2pg944v$T5rJyoR;&$*OQ3U&NgQL=r-u-?^H*p0Rv>ggN&PqicVRGIh zRztoeC9E-PHX*V<7-9*}rbbN!yH?C$P!dx|dOwF4O=U(;#8Bu%Mgaj9_!i=`zE1 zCVkVr<%b0EhJY)v)hZ}O z%drAXXX!?+%lL-)L=p#+5uMkv|C?bqkgo*txbc2@A@Uz8I5a|@8C?nFZT-k~iQq_& z*bzxDV<;8-K&q`EvJ^Ac)nEcT7PnK=32XXM9vUqRq`_l2I-Gc1kv(cU9wwxDOI0lP z4+0l>k%?=k4va*w^;MkZktlV4T$U>S2m6L5>>D_%vRH)asG_8cST!h}lZ@8sj=XsH zSe~WNOo&)``y?d%dk8Fi=Xc*i!sLPj0zAE;c?=wGAC+SM?%9M~nT3+>;h;+_$cAqt zUa2Gj+2BBTR+xLR7kUeuJ67taJ*}My%p-NUojEZb$$hpOGGQpqG(ur=(5%|C^sxbr zmXXEnrH6+R#=(`BEc-P>BLzZK%f*iyu7kIjATHjc2;L!Kiot<_!9jt(;Snr<>L7r0 z-8cEIrKS)Z4V1#6QHNNst)Uc-+!}Dhxn^=*Dvags?>TY@$FG=l-x)$_KBOz2cK z#6|Y-lE_aI*RxcbOKMHid zwetaNJ_V-C!!~_LSCH^<`#BeM_Wu-?uD3U@hk*SJ zfdGEQd&?lf?0GeKg+;Z+@(%d-q8NH4=niM<5-pR7L0We&kY!V<>0U{MX}kmd1h%7Y zV@<8N53%Y2v5JSnYZ-)zZ{!`}yy#a8qR7glM-JC=R9THl#Rkj|lb4sfgBY_Z;oGD{ zVq`tS+=7ExL2HMzU1tD|Jdmml1pS>Fh`!GQ+#0C3O;-D~3$&G?81af0f~7qf0cN{2 z|9Jo?s}4TLZJ()wV6}A|qY91MR0AgevV4m?h?DW)Y&^W&4G_kpo-WGQewtH*HT9r@ zj|p0z_IiXMr}qf@y#ynLLi2=^EgMh5Bs`-2Pxw`wSiZRl+@=mv;i>r39C2iKa#dj> zPo&OGlSl=dX;N&aZAHSQ;p7w?816sfrll(X?0F@iKLZ+c5N>ldBrR;ym`~ zkzI|Pq7cekiSb9IfxS+F7je&9&qtW7pIiYGdRdQoJbQgc1W02I(%_k{vlzjgn;`r* z+WkE#60DSUC({Y{xDtVeZSP-~BFuIkK57e9#JhRA5g6DTq{O>o)fEV)ewU-@lW9;s zT|cl5*tAo|MJHAv%*MN%@l1#}>H9tpKj3o>9E0zrEv_U+&ND1HBrMp=H(=yp$-NfS z#zi1x52bz2az{+xQv^*uFz(x8z)XR%u8Y~k!3SX$+@mWFM-M6k+wXx(`2x{;$vqC2 zqV-S2dVC04*J$P}LxiF(^KR_l0>)_|8XAn}vj~LQ(9F@nkp>-DaI9btJnu?5I9J6G z7)5qhGlxNu92)mQj*Cg;x)^Kii0PA5CTt%H!d!xF9q+6xHX`5%hY0;`y37l1E*1)4 zIYY2Eo)5IG1W<`BVuGS+S1!k)weFZmcI&QYJ+0DFrO z#%0wAC1_FZPFr`dK?v9mkF|_D2p0c@qXZ#QE<6EI7T2S7Y@pO8OR6_gI5 zRLTRd5X`=ns(33XF8L0v>u=_h!or(q^veO?Q7M3qvcrhPy#)ixkI-0BI!__AF7 zYhsiUv>UnHipzW@G1A_iL7rj0?nBk9wT5Gmc|SR0M-S+~hEjxHjAomDq$|jJ`?7)} z+=2tCGbsUpk2IDp#ESH;||~bL2`8czG?r@u`og zAqi!7wsDjQGT`jqkJ`%v9xk`z#`GB>OmR70-2P@&JDA>aI(j6xoufXIWE1_W9}p9V zS_mK=Y(oj0g)kEy^2uWEA`<+y{;_mvFy2N89$bSHOax1K#-RZcCGQ!CA~p}Lzj(%- z;EuJm_g;c1$3YZ)-qPfVF!MS%iUukE_19A0`oM|{p(^4VzmyZgSia^eriA$6pWk)g z2Uh!l6`nHg%MeWUIftc?_>Rv({Ir#5UEnhxJ`*6w#=JkhWg%E47y=n5d(?x3NqdI{ zM~3{ncpdI633RpG>y{i4YC7nH2b3N36A+N>_s=={1yX;}_2c#*fNV5@LW}!hoXF9U3ZUH$LfSh>YkcA$EkTdTE zM+G1;n^sqEGXzWr$cp>6FA8DgUUK_3(K^qJxY(Qzmm2u)l^9E6qo0lAo6r!p63TXb=jMnGB;uhGc z`bQ|S-SShS>f3gNNtNQKHp#2Smp<&=4jLF! z3h`2CTL?F}sPL2Z8=L%BTc`6AW2cFf%+-SSg@Ap2%@Hw3arHN#c-LXH?(~MkFr;^@ zlI|WR?yoMuEg0Sip2|X)qBoppdqVt`8@r9{KzuuhTs+#dPa}+KCqz5mM%i_O98Bn4 z2szhxa?&K6dPdh^a4+aKi=taq9>P59r06E`7HD3`C)Z_tgJ6W^4Kq9Lpd$4Y%8lPS z2r}=1*^ePsEM2Z4`W@5wv6pB_*!_mn$6Ud|im+4Qfm~jKVAiwwMJP4a@3@#}A86vE z%5BxyDg;Y-$6*2FsoZy|VWgG)h6d```(mfOU4}w+P z2aYWQiE`lsh%y}-4Oo}ZC7Fc_Up)Zm8NdvW<(Hobv?4qABZsF*0Uakj zm>L8E{(-!~)o<=b7>Q4uMN1%UEYpFWxZw_93MfVE@Hd1BjNvDb4$76N(?M1{_lXFK zALx;ePaIZ7@fk1qM*J+Li`BgxEd_z(d zL9j=kIfO(?FuFmBuM%i|YByy)1lD;bva^1I_e%DmLOQg=kXAF3OPYKSIEH9)J8+5$ zqDt@Kv^4RWkLw+`@SRWz&O)ijw`(uBx&w1c1_b$g55M^_{H_n-{PirsI%23v43Ti- z*uk|OV8sK%hHsUI{7*`%S-$SGIfTq@4Q{UdrhmD{26+s(s+gAPr&h6@fNK`G1iyLx z4=(G#IHDuFa%uXhJ)V#f#6bq%@GYj1IQF$0{8$Ht+*0=i+%gDPc|bbjD@U;=HQ9P( zm+>;7ng&$yq>-6}sCsnuUFww zbp)>b2u#Q;e)7I{XeTBObb#;R>MD@xH9+z5Y6JIo1g!BRKXuen5k4t>9}y7{|9Gal zMk82iAH}YveV~C;Jh`6n9SMWQsP5Ne+kAoQf3UyeREtswloH!-aD@H!dAW<)9SEkK zly+_XRs<906Toyp7X9!YUly~DBS(r z=~QrwZ}&ZD-vsr!Qy!^>-vA7{{=`iytNRjN0^{F0@N*WlZkYdEhc}rRfR&0SJSGu1YCjL{vgKCV0LR{*VQZ@n)CP8H#%)82{diB>lQ~Dnprf z#}AU=-Vn-aCafMBMC?992vF~fPkQTZ>IU1)0R?f}81k}B6&MP#Fxm2OhnGL8H{znD zdQ7QG*ZoC+JwoY;qWMX@Ops^9T7TbvubJ*!h3&1hq$ln_ zFJh)z56OflC$A`i9pqtfz5RN+`*ep1U~WQ=8{k;?ZOBu>B=ow~o7=xZ3lVIAAf(^^p?i_jsrt+tyUn9gz(WQ)+?d-i-UC+RL1Du; z#wtrWZgR_)Dr$8?1TUt<;Zg6uNb3GUdU^GZXKuZqnlH$TSF5%_B#5vtW04NJWDZ$-W3IjDl z+J_*bAXs_%a=NiV5Gm_Oo-f1fLmd<4%st3HGH^cv5dwTqh&rhS|sHVH=7Jt6_t-Q7+;A{|0B zO`gLu1gtC=xIcgU2FgMLL?523%U&P`Kc@=fyV|$(vCIwA_Js3-%TG~un|-fIn0y$^ z!#CJ1%rnq)_@lBS&daun6PZR`z_=S2;}-l5w}Rj)n6Ci^56VFRDd-2kd&X-Gvoyk| zhb3WW!_-<+R`|jcD37PKXH$DfjCdH!cf^U4b6TP*ao$-2NrOj2<#)u*TZ$tZkTeIS zK$@6-wB8`a?fKtFZT$bhMwS8=!*zWP4+BZs9qvI4C)5bI(>7@c8j2+`6OZOl9CXe#T!qD+OgZN6_ez!^9&$ zM9?EmG89%kvalW^L9WBsZEn<8RjqdEGg~dRt!Dqt1-!-=N|R7=j_+$^SNyH?M4uBs z=E&n8fRuvB!*@+5c@ilZ77-9M-1%Ysj^yVGRss0+74%hjMLDXB6guQ1NFBR7G@G%L zfTbZME-q~Dm?2@QAMp`Qsy^>BrVt3qgwH;4WQsOoxLS^~Uu>5H3qCVO>m_m=jUMvA zCt_V~5?a@g=UCThRMKLGM*Iq!4N7i;_7+!ijyZ{u3M0SK9f|;fV;ozzq|KQo;?1CG zaKnHfE?-S2!4d!-`Ln#7hNrVGLmAyodDXApmVhd4E4(_VhmW;Q^%tLwlM*B;&pIa7~&?Z45vA42ACx?b+s69O9O6r=n2FiOt3QJ z-^W0tgvnZmUJ^5g4bTPSA>bEBVx)aoP#t|Km%1c+^GQ438bBLC>w)WcGXZgQEE1#+ zL%z?oT^$305{E3@@h>+Z*g+KzQ=)ikQ~^_8-GbJqRpD_-ezUu=``mytG03#y)<14L zg88a~{=-9jqC~*Y6YX9KqI5vk;q^@K5WQ;lNoaihT80>x!_I;0Jrbk92wCUrE&&Q3b6P7lM5-7NQ8J(gh)L5wid^D4ACDT=!=P< zb>p!Nj<0tJKNfZ*D^3EM#OI87MmtC%%>J?5zJF-ml{p14yI}Xii}Vv2gy|p4p(p8k zkBaG=LgD#^@T~*xBwq!DS)V_ zl|E`B*db>jydDzU6{~KafCWfs01ZFx^!qvpmZ}4X1Z=w!m%0Cq4)x<1u)}v?eRc1iP)vQSCH{uJ-jR@yD`| zjP9ek8%0%fgfY>BIyKbIB2irQK$ML(Xk8&%2s;OoemnT==}vDRm{)+7cquzR7r_Sf zI7IoYp+1oHoQKwbtsB8d>rU~k&Igi21B8e2QI1YQD^)h0; zDhjPzXOCcJ6VcjsHK>C}AbfF?>8~YW;t>JE@6TeUuv^qsvKj=g2Q-d6v>q|MX2h}C zl1d&)?N4RG^V*czkz*3VC>v9hur~%JK5azn3C0{PB~mhvSl_XYT$hdrjt%j3r<@T` ze*79WpSVv+hMJELMX&8d)aRIR3`G(31QVdXW)E6_R6fF1^4zdRD;5kvG$weYe#t;E zzv>YzFZxJQ`2k2%0eOM9f>rwwY`rOmuH;wdx+_Axh@MW4a^=;XNn#{nt`I!j)eXHZ zjWm%O51On$foSVBb7eYFRtNIeN)ul~#Dhq94Cb9iuoaIG46Cf7g)hB{%Lt+b;+mA_ zBABQdrzS+%)cx+HDgj0#{DJRfikA>3*o=EG+kCQeLM1$J3(z3?_E9OZ71{1;4eNWLNE)%)4Fl((%^Aj+I7|gYCe`!8Ln9_+H{z5cA6EqjSMe8PXVQR%* z+a9QV9jfmwAdQn1`iNkgCvlJ^?GzpQ{wDF)M7BcPfai{4H^RK1#8D7P%ofeQSmIOj zdhiL(N4uB6D6$t!<_sO;uTd+snBH3*yW2k(B zqWl$l4Lnk}50X%E&tRXS@d{QU^^b2$Jw+4+I8@_I8~E8$^I*QWUQ3udr&u8?7Ay}X zDhS3%IKw&yg00gR#(N?nqxL0T-M1gOMZiG@hfR?~Fe`Hovmmefn}b(%RM2{+IY*?R z^*Ul*LJO_`q2i4!V7*Qot;aG)h>AT=o@IOiZ>^&=+NA~vwqTX80K3+LgEwjSn1tH~ z?a<9!1u*`qs)z{(uz0>OwY$GE$KuTcs4lJGH@p+F9nXP1Y)LUloh2v~JCWldek;y# z^W_3#X8HIYH{#t=B?v&A`ZDu>K#4%lf1iJ7n-y|=4R+KDm|U?Mes+WzuL$w}z=dhU zj|i~muMr;M?`DJ$&zaBSc<%I64y8y-zE!)qoA_&Pvfu(d4wylA0eW2cP5Y4qQ-)?#0?s+WiM))pqH-yAW0XF2{E-}<)lct(r z+rl^wf{lY65ErZ=0txnW8mD>p9n)i~FErGvg}NdK-8}w^37Tgi3FDB=T+5zCI5xTftX&>;hKz<0W+U5Iu- zjxhBgomTTkG!063GfXIP)x-WHVG>dQ?@x_o9g$k#1{`-ofZ--zb{KJ-cU72r__N*{ z5i3au3ZBA?zw|K#6T5*|6ch;UGYLDKBp;ECW(5RLrlsVEnxa+~cB)VS?m~Rx1w{8O zA|Ek}AwT?gkr3_NSwQ>5MYP^Ai=!x^b#WV5&%1`!OPYnT5r_uQIX&i^I@@P!!4P}L zaGSsA27=|<0NHYjzu`c{Y@h1^!<%4<_plA(Z_94GNn#YD;Z1ihm@tR={u?+9MJ|%; zDJfYUVj(`8BU{nB^=yzlsEJ&ch=vpxF?b?s-VaWIz~qHUz+HK|nS@G3!(aKJ&Zo)j z$@V!UMf@o^4Tx&I>zVKf$u*ftIbw%0L9T`tv|iUWLY!QP{_!aRs(Ci-Zg^y_euiKx zzjAGeE%5h6-D+fHS*|K#uL;e3SpA&W;UpAZ99I^nssskG)2i_dkWH zLx6ob%}To9zg9{D%=$>e_RgbInnn(3(?88VyJ$S&avm|YB&YlUIP@*w(Oq>=4#8`YUQYD2quFG7lU5-Bq)1; z#K^_O#KZ;$L!qY}xyV1H`8Ks{-em~tGkV;zrqCGdqjn4h36@VVrI3@@jyHLF7l1i& zLxuZdmjuE}dxrb5LRgeCNW%B&?!HO=i%b@P5&=1&OaSF)S!$e&Vm1a z2$s8qIfpaYceQxr#fN?y7XB*H&{>caGiF_c)E3ADci4Pz6~*Hal>Ix2jvXFGQ+}}y z`?TtF0wZHPyz2`;U?)lZdL2g}mE-_MU!R25&9~68kr?tzH}S}t4a6g3Ij^@#VX@y} z!ys%^J?4T|b|pDBj4^$n*FL6zmg_qqP44Ctu^V delta 418448 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 z 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

    <-_V;xE4C@k$!HxdFU?Utc{r{Cj=< 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 diff --git a/youtube-dl.1 b/youtube-dl.1 index 08e2ae3..cb69dee 100644 --- a/youtube-dl.1 +++ b/youtube-dl.1 @@ -4,7 +4,7 @@ youtube\-dl \- download videos from youtube.com or other video platforms .SH SYNOPSIS .PP -\f[B]youtube\-dl\f[] OPTIONS (#options) URL [URL...] +\f[B]youtube\-dl\f[] [OPTIONS] URL [URL...] .SH DESCRIPTION .PP \f[B]youtube\-dl\f[] is a small command\-line program to download videos @@ -33,10 +33,6 @@ redistribute it or use it however you like. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ they\ would\ handle \-\-extractor\-descriptions\ \ \ \ \ \ \ \ \ Output\ descriptions\ of\ all\ supported \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ extractors -\-\-proxy\ URL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ the\ specified\ HTTP/HTTPS\ proxy.\ Pass\ in -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ an\ empty\ string\ (\-\-proxy\ "")\ for\ direct -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ connection -\-\-socket\-timeout\ None\ \ \ \ \ \ \ \ \ \ \ \ Time\ to\ wait\ before\ giving\ up,\ in\ seconds \-\-default\-search\ PREFIX\ \ \ \ \ \ \ \ \ \ Use\ this\ prefix\ for\ unqualified\ URLs.\ For \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ example\ "gvsearch2:"\ downloads\ two\ videos \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ from\ google\ videos\ for\ \ youtube\-dl\ "large @@ -48,14 +44,30 @@ redistribute it or use it however you like. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ this\ is\ not\ possible\ instead\ of\ searching. \-\-ignore\-config\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ read\ configuration\ files.\ When\ given \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ the\ global\ configuration\ file\ /etc -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ /youtube\-dl.conf:\ do\ not\ read\ the\ user -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ configuration\ in\ ~/.config/youtube\-dl.conf -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (%APPDATA%/youtube\-dl/config.txt\ on -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Windows) +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ /youtube\-dl.conf:\ Do\ not\ read\ the\ user +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ configuration\ in\ ~/.config/youtube\- +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dl/config\ (%APPDATA%/youtube\-dl/config.txt +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ on\ Windows) \-\-flat\-playlist\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ extract\ the\ videos\ of\ a\ playlist, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ only\ list\ them. \f[] .fi +.SS Network Options: +.IP +.nf +\f[C] +\-\-proxy\ URL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ the\ specified\ HTTP/HTTPS\ proxy.\ Pass\ in +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ an\ empty\ string\ (\-\-proxy\ "")\ for\ direct +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ connection +\-\-socket\-timeout\ SECONDS\ \ \ \ \ \ \ \ \ Time\ to\ wait\ before\ giving\ up,\ in\ seconds +\-\-source\-address\ IP\ \ \ \ \ \ \ \ \ \ \ \ \ \ Client\-side\ IP\ address\ to\ bind\ to +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (experimental) +\-4,\ \-\-force\-ipv4\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Make\ all\ connections\ via\ IPv4 +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (experimental) +\-6,\ \-\-force\-ipv6\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Make\ all\ connections\ via\ IPv6 +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (experimental) +\f[] +.fi .SS Video Selection: .IP .nf @@ -104,6 +116,7 @@ redistribute it or use it however you like. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ size.\ By\ default,\ the\ buffer\ size\ is \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ automatically\ resized\ from\ an\ initial\ value \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ of\ SIZE. +\-\-playlist\-reverse\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ playlist\ videos\ in\ reverse\ order \f[] .fi .SS Filesystem Options: @@ -113,7 +126,6 @@ redistribute it or use it however you like. \-a,\ \-\-batch\-file\ FILE\ \ \ \ \ \ \ \ \ \ \ \ file\ containing\ URLs\ to\ download\ (\[aq]\-\[aq]\ for \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ stdin) \-\-id\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ use\ only\ video\ ID\ in\ file\ name -\-A,\ \-\-auto\-number\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ number\ downloaded\ files\ starting\ from\ 00000 \-o,\ \-\-output\ TEMPLATE\ \ \ \ \ \ \ \ \ \ \ \ output\ filename\ template.\ Use\ %(title)s\ to \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ get\ the\ title,\ %(uploader)s\ for\ the \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uploader\ name,\ %(uploader_id)s\ for\ the @@ -147,6 +159,9 @@ redistribute it or use it however you like. \-\-restrict\-filenames\ \ \ \ \ \ \ \ \ \ \ \ \ Restrict\ filenames\ to\ only\ ASCII \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ characters,\ and\ avoid\ "&"\ and\ spaces\ in \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ filenames +\-A,\ \-\-auto\-number\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated;\ use\ \ \-o +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "%(autonumber)s\-%(title)s.%(ext)s"\ ]\ number +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ downloaded\ files\ starting\ from\ 00000 \-t,\ \-\-title\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated]\ use\ title\ in\ file\ name \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (default) \-l,\ \-\-literal\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated]\ alias\ of\ \-\-title @@ -205,6 +220,8 @@ redistribute it or use it however you like. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ each\ command\-line\ argument.\ If\ the\ URL \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ refers\ to\ a\ playlist,\ dump\ the\ whole \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ playlist\ information\ in\ a\ single\ line. +\-\-print\-json\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Be\ quiet\ and\ print\ the\ video\ information\ as +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ JSON\ (video\ is\ still\ being\ downloaded). \-\-newline\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ output\ progress\ bar\ as\ new\ lines \-\-no\-progress\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ do\ not\ print\ progress\ bar \-\-console\-title\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ display\ progress\ in\ console\ titlebar @@ -215,6 +232,10 @@ redistribute it or use it however you like. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ files\ in\ the\ current\ directory\ to\ debug \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ problems \-\-print\-traffic\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Display\ sent\ and\ read\ HTTP\ traffic +\-C,\ \-\-call\-home\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Contact\ the\ youtube\-dl\ server\ for +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ debugging. +\-\-no\-call\-home\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ NOT\ contact\ the\ youtube\-dl\ server\ for +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ debugging. \f[] .fi .SS Workarounds: @@ -242,14 +263,15 @@ redistribute it or use it however you like. .nf \f[C] \-f,\ \-\-format\ FORMAT\ \ \ \ \ \ \ \ \ \ \ \ \ \ video\ format\ code,\ specify\ the\ order\ of -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ preference\ using\ slashes:\ \-f\ 22/17/18\ .\ \ \-f -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ mp4\ ,\ \-f\ m4a\ and\ \ \-f\ flv\ \ are\ also -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ supported.\ You\ can\ also\ use\ the\ special -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ names\ "best",\ "bestvideo",\ "bestaudio", -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "worst",\ "worstvideo"\ and\ "worstaudio".\ By -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ default,\ youtube\-dl\ will\ pick\ the\ best -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ quality.\ Use\ commas\ to\ download\ multiple -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ audio\ formats,\ such\ as\ \-f +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ preference\ using\ slashes,\ as\ in\ \-f\ 22/17/18 +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .\ \ Instead\ of\ format\ codes,\ you\ can\ select +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ by\ extension\ for\ the\ extensions\ aac,\ m4a, +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ mp3,\ mp4,\ ogg,\ wav,\ webm.\ You\ can\ also\ use +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ the\ special\ names\ "best",\ "bestvideo", +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "bestaudio",\ "worst".\ \ By\ default,\ youtube\- +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dl\ will\ pick\ the\ best\ quality.\ Use\ commas +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ to\ download\ multiple\ audio\ formats,\ such\ as +\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \-f \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 136/137/mp4/bestvideo,140/m4a/bestaudio. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ You\ can\ merge\ the\ video\ and\ audio\ of\ two \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ formats\ into\ a\ single\ file\ using\ \-f\ \\youtube\-dl.conf\f[]. +\f[C]C:\\Users\\\\youtube\-dl.conf\f[]. .SH OUTPUT TEMPLATE .PP The \f[C]\-o\f[] option allows users to indicate a template for the @@ -521,14 +552,33 @@ youtube URL, solving the CAPTCHA, and restart youtube\-dl. .PP Once the video is fully downloaded, use any video player, such as vlc (http://www.videolan.org) or mplayer (http://www.mplayerhq.hu/). -.SS The links provided by youtube\-dl \-g are not working anymore +.SS I extracted a video URL with \-g, but it does not play on another +machine / in my webbrowser. .PP -The URLs youtube\-dl outputs require the downloader to have the correct -cookies. +It depends a lot on the service. +In many cases, requests for the video (to download/play it) must come +from the same IP address and with the same cookies. Use the \f[C]\-\-cookies\f[] option to write the required cookies into a file, and advise your downloader to read cookies from that file. Some sites also require a common user agent to be used, use \f[C]\-\-dump\-user\-agent\f[] to see the one in use by youtube\-dl. +.PP +It may be beneficial to use IPv6; in some cases, the restrictions are +only applied to IPv4. +Some services (sometimes only for a subset of videos) do not restrict +the video URL by IP address, cookie, or user\-agent, but these are the +exception rather than the rule. +.PP +Please bear in mind that some URL protocols are \f[B]not\f[] supported +by browsers out of the box, including RTMP. +If you are using \-g, your own downloader must support these as well. +.PP +If you want to play the video on a machine that is not running +youtube\-dl, you can relay the video content from the machine that runs +youtube\-dl. +You can use \f[C]\-o\ \-\f[] to let youtube\-dl stream a video to +stdout, or simply allow the player to download the files written by +youtube\-dl in turn. .SS ERROR: no fmt_url_map or conn information found in video info .PP youtube has switched to a new video info format in July 2011 which is @@ -565,6 +615,51 @@ To recompile the executable, run \f[C]make\ youtube\-dl\f[]. To run the exe you need to install first the Microsoft Visual C++ 2008 Redistributable Package (http://www.microsoft.com/en-us/download/details.aspx?id=29). +.SS On Windows, how should I set up ffmpeg and youtube\-dl? Where should +I put the exe files? +.PP +If you put youtube\-dl and ffmpeg in the same directory that you\[aq]re +running the command from, it will work, but that\[aq]s rather +cumbersome. +.PP +To make a different directory work \- either for ffmpeg, or for +youtube\-dl, or for both \- simply create the directory (say, +\f[C]C:\\bin\f[], or \f[C]C:\\Users\\\\bin\f[]), put all the +executables directly in there, and then set your PATH environment +variable (https://www.java.com/en/download/help/path.xml) to include +that directory. +.PP +From then on, after restarting your shell, you will be able to access +both youtube\-dl and ffmpeg (and youtube\-dl will be able to find +ffmpeg) by simply typing \f[C]youtube\-dl\f[] or \f[C]ffmpeg\f[], no +matter what directory you\[aq]re in. +.SS How can I detect whether a given URL is supported by youtube\-dl? +.PP +For one, have a look at the list of supported +sites (docs/supportedsites). +Note that it can sometimes happen that the site changes its URL scheme +(say, from http://example.com/v/1234567 to http://example.com/v/1234567 +) and youtube\-dl reports an URL of a service in that list as +unsupported. +In that case, simply report a bug. +.PP +It is \f[I]not\f[] possible to detect whether a URL is supported or not. +That\[aq]s because youtube\-dl contains a generic extractor which +matches \f[B]all\f[] URLs. +You may be tempted to disable, exclude, or remove the generic extractor, +but the generic extractor not only allows users to extract videos from +lots of websites that embed a video from another service, but may also +be used to extract video from a service that it\[aq]s hosting itself. +Therefore, we neither recommend nor support disabling, excluding, or +removing the generic extractor. +.PP +If you want to find out whether a given URL is supported, simply call +youtube\-dl with it. +If you get no videos back, chances are the URL is either not referring +to a video or unsupported. +You can find out which by examining the output (if you run youtube\-dl +on the console) or catching an \f[C]UnsupportedError\f[] exception if +you run it from a Python program. .SH DEVELOPER INSTRUCTIONS .PP Most users do not need to build youtube\-dl and can download the @@ -733,6 +828,46 @@ For a list of what can be done, have a look at youtube_dl/YoutubeDL.py (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L69). For a start, if you want to intercept youtube\-dl\[aq]s output, set a \f[C]logger\f[] object. +.PP +Here\[aq]s a more complete example of a program that outputs only errors +(and a short message after the download is finished), and +downloads/converts the video to an mp3 file: +.IP +.nf +\f[C] +import\ youtube_dl + + +class\ MyLogger(object): +\ \ \ \ def\ debug(self,\ msg): +\ \ \ \ \ \ \ \ pass + +\ \ \ \ def\ warning(self,\ msg): +\ \ \ \ \ \ \ \ pass + +\ \ \ \ def\ error(self,\ msg): +\ \ \ \ \ \ \ \ print(msg) + + +def\ my_hook(d): +\ \ \ \ if\ d[\[aq]status\[aq]]\ ==\ \[aq]finished\[aq]: +\ \ \ \ \ \ \ \ print(\[aq]Done\ downloading,\ now\ converting\ ...\[aq]) + + +ydl_opts\ =\ { +\ \ \ \ \[aq]format\[aq]:\ \[aq]bestaudio/best\[aq], +\ \ \ \ \[aq]postprocessors\[aq]:\ [{ +\ \ \ \ \ \ \ \ \[aq]key\[aq]:\ \[aq]FFmpegExtractAudio\[aq], +\ \ \ \ \ \ \ \ \[aq]preferredcodec\[aq]:\ \[aq]mp3\[aq], +\ \ \ \ \ \ \ \ \[aq]preferredquality\[aq]:\ \[aq]192\[aq], +\ \ \ \ }], +\ \ \ \ \[aq]logger\[aq]:\ MyLogger(), +\ \ \ \ \[aq]progress_hooks\[aq]:\ [my_hook], +} +with\ youtube_dl.YoutubeDL(ydl_opts)\ as\ ydl: +\ \ \ \ ydl.download([\[aq]http://www.youtube.com/watch?v=BaW_jenozKc\[aq]]) +\f[] +.fi .SH BUGS .PP Bugs and suggestions should be reported at: @@ -740,17 +875,17 @@ Bugs and suggestions should be reported at: Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. +For discussions, join us in the irc channel #youtube\-dl on freenode. +.PP +\f[B]Please include the full output of youtube\-dl when run with +\f[C]\-v\f[]\f[]. .PP -Please include the full output of the command when run with -\f[C]\-\-verbose\f[]. The output (including the first lines) contain important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. .PP -For discussions, join us in the irc channel #youtube\-dl on freenode. -.PP -When you submit a request, please re\-read it once to avoid a couple of +Please re\-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist): .SS Is the description of the issue itself sufficient? .PP diff --git a/youtube-dl.bash-completion b/youtube-dl.bash-completion index 9ee1b7a..0bad8b6 100644 --- a/youtube-dl.bash-completion +++ b/youtube-dl.bash-completion @@ -4,7 +4,7 @@ __youtube_dl() COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --proxy --socket-timeout --default-search --ignore-config --flat-playlist --playlist-start --playlist-end --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --no-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --batch-file --id --auto-number --output --autonumber-size --restrict-filenames --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --write-thumbnail --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --newline --no-progress --console-title --verbose --dump-intermediate-pages --write-pages --youtube-print-sig-code --print-traffic --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --format --all-formats --prefer-free-formats --max-quality --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --xattrs --prefer-avconv --prefer-ffmpeg --exec" + opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --default-search --ignore-config --flat-playlist --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --playlist-start --playlist-end --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --no-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --write-thumbnail --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-intermediate-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --format --all-formats --prefer-free-formats --max-quality --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --xattrs --fixup --prefer-avconv --prefer-ffmpeg --exec" keywords=":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory" fileopts="-a|--batch-file|--download-archive|--cookies|--load-info" diropts="--cache-dir" diff --git a/youtube-dl.fish b/youtube-dl.fish index 923fd60..76857d4 100644 --- a/youtube-dl.fish +++ b/youtube-dl.fish @@ -7,11 +7,14 @@ complete --command youtube-dl --long-option abort-on-error --description 'Abort complete --command youtube-dl --long-option dump-user-agent --description 'display the current browser identification' complete --command youtube-dl --long-option list-extractors --description 'List all supported extractors and the URLs they would handle' complete --command youtube-dl --long-option extractor-descriptions --description 'Output descriptions of all supported extractors' -complete --command youtube-dl --long-option proxy --description 'Use the specified HTTP/HTTPS proxy. Pass in an empty string (--proxy "") for direct connection' -complete --command youtube-dl --long-option socket-timeout --description 'Time to wait before giving up, in seconds' complete --command youtube-dl --long-option default-search --description 'Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube-dl "large apple". Use the value "auto" to let youtube-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching.' -complete --command youtube-dl --long-option ignore-config --description 'Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf: do not read the user configuration in ~/.config/youtube-dl.conf (%APPDATA%/youtube-dl/config.txt on Windows)' +complete --command youtube-dl --long-option ignore-config --description 'Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf: Do not read the user configuration in ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)' complete --command youtube-dl --long-option flat-playlist --description 'Do not extract the videos of a playlist, only list them.' +complete --command youtube-dl --long-option proxy --description 'Use the specified HTTP/HTTPS proxy. Pass in an empty string (--proxy "") for direct connection' +complete --command youtube-dl --long-option socket-timeout --description 'Time to wait before giving up, in seconds' +complete --command youtube-dl --long-option source-address --description 'Client-side IP address to bind to (experimental)' +complete --command youtube-dl --long-option force-ipv4 --short-option 4 --description 'Make all connections via IPv4 (experimental)' +complete --command youtube-dl --long-option force-ipv6 --short-option 6 --description 'Make all connections via IPv6 (experimental)' complete --command youtube-dl --long-option playlist-start --description 'playlist video to start at (default is %default)' complete --command youtube-dl --long-option playlist-end --description 'playlist video to end at (default is last)' complete --command youtube-dl --long-option match-title --description 'download only matching titles (regex or caseless sub-string)' @@ -33,12 +36,13 @@ complete --command youtube-dl --long-option retries --short-option R --descripti complete --command youtube-dl --long-option buffer-size --description 'size of download buffer (e.g. 1024 or 16K) (default is %default)' complete --command youtube-dl --long-option no-resize-buffer --description 'do not automatically adjust the buffer size. By default, the buffer size is automatically resized from an initial value of SIZE.' complete --command youtube-dl --long-option test +complete --command youtube-dl --long-option playlist-reverse --description 'Download playlist videos in reverse order' complete --command youtube-dl --long-option batch-file --short-option a --description 'file containing URLs to download ('"'"'-'"'"' for stdin)' --require-parameter complete --command youtube-dl --long-option id --description 'use only video ID in file name' -complete --command youtube-dl --long-option auto-number --short-option A --description 'number downloaded files starting from 00000' complete --command youtube-dl --long-option output --short-option o --description 'output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(uploader_id)s for the uploader nickname if different, %(autonumber)s to get an automatically incremented number, %(ext)s for the filename extension, %(format)s for the format description (like "22 - 1280x720" or "HD"), %(format_id)s for the unique id of the format (like Youtube'"'"'s itags: "137"), %(upload_date)s for the upload date (YYYYMMDD), %(extractor)s for the provider (youtube, metacafe, etc), %(id)s for the video id, %(playlist_title)s, %(playlist_id)s, or %(playlist)s (=title if present, ID otherwise) for the playlist the video is in, %(playlist_index)s for the position in the playlist. %(height)s and %(width)s for the width and height of the video format. %(resolution)s for a textual description of the resolution of the video format. %% for a literal percent. Use - to output to stdout. Can also be used to download to a different directory, for example with -o '"'"'/my/downloads/%(uploader)s/%(title)s-%(id)s.%(ext)s'"'"' .' complete --command youtube-dl --long-option autonumber-size --description 'Specifies the number of digits in %(autonumber)s when it is present in output filename template or --auto-number option is given' complete --command youtube-dl --long-option restrict-filenames --description 'Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames' +complete --command youtube-dl --long-option auto-number --short-option A --description '[deprecated; use -o "%(autonumber)s-%(title)s.%(ext)s" ] number downloaded files starting from 00000' complete --command youtube-dl --long-option title --short-option t --description '[deprecated] use title in file name (default)' complete --command youtube-dl --long-option literal --short-option l --description '[deprecated] alias of --title' complete --command youtube-dl --long-option no-overwrites --short-option w --description 'do not overwrite files' @@ -69,6 +73,7 @@ complete --command youtube-dl --long-option get-filename --description 'simulate complete --command youtube-dl --long-option get-format --description 'simulate, quiet but print output format' complete --command youtube-dl --long-option dump-json --short-option j --description 'simulate, quiet but print JSON information. See --output for a description of available keys.' complete --command youtube-dl --long-option dump-single-json --short-option J --description 'simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line.' +complete --command youtube-dl --long-option print-json --description 'Be quiet and print the video information as JSON (video is still being downloaded).' complete --command youtube-dl --long-option newline --description 'output progress bar as new lines' complete --command youtube-dl --long-option no-progress --description 'do not print progress bar' complete --command youtube-dl --long-option console-title --description 'display progress in console titlebar' @@ -77,6 +82,8 @@ complete --command youtube-dl --long-option dump-intermediate-pages --descriptio complete --command youtube-dl --long-option write-pages --description 'Write downloaded intermediary pages to files in the current directory to debug problems' complete --command youtube-dl --long-option youtube-print-sig-code complete --command youtube-dl --long-option print-traffic --description 'Display sent and read HTTP traffic' +complete --command youtube-dl --long-option call-home --short-option C --description 'Contact the youtube-dl server for debugging.' +complete --command youtube-dl --long-option no-call-home --description 'Do NOT contact the youtube-dl server for debugging.' complete --command youtube-dl --long-option encoding --description 'Force the specified encoding (experimental)' complete --command youtube-dl --long-option no-check-certificate --description 'Suppress HTTPS certificate validation.' complete --command youtube-dl --long-option prefer-insecure --description 'Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube)' @@ -84,13 +91,14 @@ complete --command youtube-dl --long-option user-agent --description 'specify a complete --command youtube-dl --long-option referer --description 'specify a custom referer, use if the video access is restricted to one domain' complete --command youtube-dl --long-option add-header --description 'specify a custom HTTP header and its value, separated by a colon '"'"':'"'"'. You can use this option multiple times' complete --command youtube-dl --long-option bidi-workaround --description 'Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH' -complete --command youtube-dl --long-option format --short-option f --description 'video format code, specify the order of preference using slashes: -f 22/17/18 . -f mp4 , -f m4a and -f flv are also supported. You can also use the special names "best", "bestvideo", "bestaudio", "worst", "worstvideo" and "worstaudio". By default, youtube-dl will pick the best quality. Use commas to download multiple audio formats, such as -f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can merge the video and audio of two formats into a single file using -f + (requires ffmpeg or avconv), for example -f bestvideo+bestaudio.' +complete --command youtube-dl --long-option format --short-option f --description 'video format code, specify the order of preference using slashes, as in -f 22/17/18 . Instead of format codes, you can select by extension for the extensions aac, m4a, mp3, mp4, ogg, wav, webm. You can also use the special names "best", "bestvideo", "bestaudio", "worst". By default, youtube-dl will pick the best quality. Use commas to download multiple audio formats, such as -f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can merge the video and audio of two formats into a single file using -f + (requires ffmpeg or avconv), for example -f bestvideo+bestaudio.' complete --command youtube-dl --long-option all-formats --description 'download all available video formats' complete --command youtube-dl --long-option prefer-free-formats --description 'prefer free video formats unless a specific one is requested' complete --command youtube-dl --long-option max-quality --description 'highest quality format to download' complete --command youtube-dl --long-option list-formats --short-option F --description 'list all available formats' complete --command youtube-dl --long-option youtube-include-dash-manifest complete --command youtube-dl --long-option youtube-skip-dash-manifest --description 'Do not download the DASH manifest on YouTube videos' +complete --command youtube-dl --long-option merge-output-format --description 'If a merge is required (e.g. bestvideo+bestaudio), output to given container format. One of mkv, mp4, ogg, webm, flv.Ignored if no merge is required' complete --command youtube-dl --long-option write-sub --description 'write subtitle file' complete --command youtube-dl --long-option write-auto-sub --description 'write automatic subtitle file (youtube only)' complete --command youtube-dl --long-option all-subs --description 'downloads all the available subtitles of the video' @@ -112,6 +120,7 @@ complete --command youtube-dl --long-option embed-subs --description 'embed subt complete --command youtube-dl --long-option embed-thumbnail --description 'embed thumbnail in the audio as cover art' complete --command youtube-dl --long-option add-metadata --description 'write metadata to the video file' complete --command youtube-dl --long-option xattrs --description 'write metadata to the video file'"'"'s xattrs (using dublin core and xdg standards)' +complete --command youtube-dl --long-option fixup --description '(experimental) Automatically correct known faults of the file. One of never (do nothing), warn (only emit a warning), detect_or_warn(check whether we can do anything about it, warn otherwise' complete --command youtube-dl --long-option prefer-avconv --description 'Prefer avconv over ffmpeg for running the postprocessors (default)' complete --command youtube-dl --long-option prefer-ffmpeg --description 'Prefer ffmpeg over avconv for running the postprocessors' complete --command youtube-dl --long-option exec --description 'Execute a command on the file after downloading, similar to find'"'"'s -exec syntax. Example: --exec '"'"'adb push {} /sdcard/Music/ && rm {}'"'"'' diff --git a/youtube-dl.zsh b/youtube-dl.zsh index af7a61a..b4cef18 100644 --- a/youtube-dl.zsh +++ b/youtube-dl.zsh @@ -19,7 +19,7 @@ __youtube_dl() { elif [[ ${prev} == "--recode-video" ]]; then _arguments '*: :(mp4 flv ogg webm mkv)' else - _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --proxy --socket-timeout --default-search --ignore-config --flat-playlist --playlist-start --playlist-end --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --no-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --batch-file --id --auto-number --output --autonumber-size --restrict-filenames --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --write-thumbnail --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --newline --no-progress --console-title --verbose --dump-intermediate-pages --write-pages --youtube-print-sig-code --print-traffic --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --format --all-formats --prefer-free-formats --max-quality --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --xattrs --prefer-avconv --prefer-ffmpeg --exec)' + _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --default-search --ignore-config --flat-playlist --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --playlist-start --playlist-end --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --no-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --write-thumbnail --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-intermediate-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --format --all-formats --prefer-free-formats --max-quality --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --xattrs --fixup --prefer-avconv --prefer-ffmpeg --exec)' fi ;; esac diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 21c7c29..772fddd 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -7,6 +7,7 @@ import collections import datetime import errno import io +import itertools import json import locale import os @@ -26,6 +27,7 @@ from .compat import ( compat_cookiejar, compat_expanduser, compat_http_client, + compat_kwargs, compat_str, compat_urllib_error, compat_urllib_request, @@ -56,17 +58,24 @@ from .utils import ( takewhile_inclusive, UnavailableVideoError, url_basename, + version_tuple, write_json_file, write_string, YoutubeDLHandler, prepend_extension, args_to_str, + age_restricted, ) from .cache import Cache from .extractor import get_info_extractor, gen_extractors from .downloader import get_suitable_downloader from .downloader.rtmp import rtmpdump_version -from .postprocessor import FFmpegMergerPP, FFmpegPostProcessor +from .postprocessor import ( + FFmpegFixupStretchedPP, + FFmpegMergerPP, + FFmpegPostProcessor, + get_postprocessor, +) from .version import __version__ @@ -115,7 +124,7 @@ class YoutubeDL(object): dump_single_json: Force printing the info_dict of the whole playlist (or video) as a single JSON line. simulate: Do not download the video files. - format: Video format code. + format: Video format code. See options.py for more information. format_limit: Highest quality format to try. outtmpl: Template for output names. restrictfilenames: Do not allow "&" and spaces in file names @@ -123,6 +132,7 @@ class YoutubeDL(object): nooverwrites: Prevent overwriting files. playliststart: Playlist item to start at. playlistend: Playlist item to end at. + playlistreverse: Download playlist items in reverse order. matchtitle: Download only matching titles. rejecttitle: Reject downloads for matching titles. logger: Log messages to a logging.Logger instance. @@ -174,6 +184,38 @@ class YoutubeDL(object): extract_flat: Do not resolve URLs, return the immediate result. Pass in 'in_playlist' to only show this behavior for playlist items. + postprocessors: A list of dictionaries, each with an entry + * key: The name of the postprocessor. See + youtube_dl/postprocessor/__init__.py for a list. + as well as any further keyword arguments for the + postprocessor. + progress_hooks: A list of functions that get called on download + progress, with a dictionary with the entries + * filename: The final filename + * status: One of "downloading" and "finished" + + The dict may also have some of the following entries: + + * downloaded_bytes: Bytes on disk + * total_bytes: Size of the whole file, None if unknown + * tmpfilename: The filename we're currently writing to + * eta: The estimated time in seconds, None if unknown + * speed: The download speed in bytes/second, None if + unknown + + Progress hooks are guaranteed to be called at least once + (with status "finished") if the download is successful. + merge_output_format: Extension to use when merging formats. + fixup: Automatically correct known faults of the file. + One of: + - "never": do nothing + - "warn": only emit a warning + - "detect_or_warn": check whether we can do anything + about it, warn otherwise + source_address: (Experimental) Client-side IP address to bind to. + call_home: Boolean, true iff we are allowed to contact the + youtube-dl servers for debugging. + The following parameters are not used by YoutubeDL itself, they are used by the FileDownloader: @@ -254,6 +296,16 @@ class YoutubeDL(object): self.print_debug_header() self.add_default_info_extractors() + for pp_def_raw in self.params.get('postprocessors', []): + pp_class = get_postprocessor(pp_def_raw['key']) + pp_def = dict(pp_def_raw) + del pp_def['key'] + pp = pp_class(self, **compat_kwargs(pp_def)) + self.add_post_processor(pp) + + for ph in self.params.get('progress_hooks', []): + self.add_progress_hook(ph) + def warn_if_short_id(self, argv): # short YouTube ID starting with dash? idxs = [ @@ -511,13 +563,8 @@ class YoutubeDL(object): max_views = self.params.get('max_views') if max_views is not None and view_count > max_views: return 'Skipping %s, because it has exceeded the maximum view count (%d/%d)' % (video_title, view_count, max_views) - age_limit = self.params.get('age_limit') - if age_limit is not None: - actual_age_limit = info_dict.get('age_limit') - if actual_age_limit is None: - actual_age_limit = 0 - if age_limit < actual_age_limit: - return 'Skipping "' + title + '" because it is age restricted' + if age_restricted(info_dict.get('age_limit'), self.params.get('age_limit')): + return 'Skipping "%s" because it is age restricted' % title if self.in_download_archive(info_dict): return '%s has already been recorded in archive' % video_title return None @@ -621,23 +668,15 @@ class YoutubeDL(object): ie_result['url'], ie_key=ie_result.get('ie_key'), extra_info=extra_info, download=False, process=False) - def make_result(embedded_info): - new_result = ie_result.copy() - for f in ('_type', 'url', 'ext', 'player_url', 'formats', - 'entries', 'ie_key', 'duration', - 'subtitles', 'annotations', 'format', - 'thumbnail', 'thumbnails'): - if f in new_result: - del new_result[f] - if f in embedded_info: - new_result[f] = embedded_info[f] - return new_result - new_result = make_result(info) + force_properties = dict( + (k, v) for k, v in ie_result.items() if v is not None) + for f in ('_type', 'url'): + if f in force_properties: + del force_properties[f] + new_result = info.copy() + new_result.update(force_properties) assert new_result.get('_type') != 'url_transparent' - if new_result.get('_type') == 'compat_list': - new_result['entries'] = [ - make_result(e) for e in new_result['entries']] return self.process_ie_result( new_result, download=download, extra_info=extra_info) @@ -654,24 +693,34 @@ class YoutubeDL(object): if playlistend == -1: playlistend = None - if isinstance(ie_result['entries'], list): - n_all_entries = len(ie_result['entries']) - entries = ie_result['entries'][playliststart:playlistend] + ie_entries = ie_result['entries'] + if isinstance(ie_entries, list): + n_all_entries = len(ie_entries) + entries = ie_entries[playliststart:playlistend] n_entries = len(entries) self.to_screen( "[%s] playlist %s: Collected %d video ids (downloading %d of them)" % (ie_result['extractor'], playlist, n_all_entries, n_entries)) - else: - assert isinstance(ie_result['entries'], PagedList) - entries = ie_result['entries'].getslice( + elif isinstance(ie_entries, PagedList): + entries = ie_entries.getslice( playliststart, playlistend) n_entries = len(entries) self.to_screen( "[%s] playlist %s: Downloading %d videos" % (ie_result['extractor'], playlist, n_entries)) + else: # iterable + entries = list(itertools.islice( + ie_entries, playliststart, playlistend)) + n_entries = len(entries) + self.to_screen( + "[%s] playlist %s: Downloading %d videos" % + (ie_result['extractor'], playlist, n_entries)) + + if self.params.get('playlistreverse', False): + entries = entries[::-1] for i, entry in enumerate(entries, 1): - self.to_screen('[download] Downloading video #%s of %s' % (i, n_entries)) + self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) extra = { 'n_entries': n_entries, 'playlist': playlist, @@ -749,7 +798,7 @@ class YoutubeDL(object): if video_formats: return video_formats[0] else: - extensions = ['mp4', 'flv', 'webm', '3gp', 'm4a'] + extensions = ['mp4', 'flv', 'webm', '3gp', 'm4a', 'mp3', 'ogg', 'aac', 'wav'] if format_spec in extensions: filter_f = lambda f: f['ext'] == format_spec else: @@ -787,6 +836,10 @@ class YoutubeDL(object): info_dict['display_id'] = info_dict['id'] if info_dict.get('upload_date') is None and info_dict.get('timestamp') is not None: + # Working around negative timestamps in Windows + # (see http://bugs.python.org/issue1646728) + if info_dict['timestamp'] < 0 and os.name == 'nt': + info_dict['timestamp'] = 0 upload_date = datetime.datetime.utcfromtimestamp( info_dict['timestamp']) info_dict['upload_date'] = upload_date.strftime('%Y%m%d') @@ -868,10 +921,24 @@ class YoutubeDL(object): 'contain the video, try using ' '"-f %s+%s"' % (format_2, format_1)) return + output_ext = ( + formats_info[0]['ext'] + if self.params.get('merge_output_format') is None + else self.params['merge_output_format']) selected_format = { 'requested_formats': formats_info, 'format': rf, 'ext': formats_info[0]['ext'], + 'width': formats_info[0].get('width'), + 'height': formats_info[0].get('height'), + 'resolution': formats_info[0].get('resolution'), + 'fps': formats_info[0].get('fps'), + 'vcodec': formats_info[0].get('vcodec'), + 'vbr': formats_info[0].get('vbr'), + 'stretched_ratio': formats_info[0].get('stretched_ratio'), + 'acodec': formats_info[1].get('acodec'), + 'abr': formats_info[1].get('abr'), + 'ext': output_ext, } else: selected_format = None @@ -930,8 +997,12 @@ class YoutubeDL(object): if self.params.get('forceid', False): self.to_stdout(info_dict['id']) if self.params.get('forceurl', False): - # For RTMP URLs, also include the playpath - self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) + if info_dict.get('requested_formats') is not None: + for f in info_dict['requested_formats']: + self.to_stdout(f['url'] + f.get('play_path', '')) + else: + # For RTMP URLs, also include the playpath + self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) if self.params.get('forcethumbnail', False) and info_dict.get('thumbnail') is not None: self.to_stdout(info_dict['thumbnail']) if self.params.get('forcedescription', False) and info_dict.get('description') is not None: @@ -967,13 +1038,13 @@ class YoutubeDL(object): descfn = filename + '.description' if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(descfn)): self.to_screen('[info] Video description is already present') + elif info_dict.get('description') is None: + self.report_warning('There\'s no description to write.') else: try: self.to_screen('[info] Writing video description to: ' + descfn) with io.open(encodeFilename(descfn), 'w', encoding='utf-8') as descfile: descfile.write(info_dict['description']) - except (KeyError, TypeError): - self.report_warning('There\'s no description to write.') except (OSError, IOError): self.report_error('Cannot write description file ' + descfn) return @@ -1050,58 +1121,75 @@ class YoutubeDL(object): (info_dict['thumbnail'], compat_str(err))) if not self.params.get('skip_download', False): - if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(filename)): - success = True - else: - try: - def dl(name, info): - fd = get_suitable_downloader(info)(self, self.params) - for ph in self._progress_hooks: - fd.add_progress_hook(ph) - if self.params.get('verbose'): - self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) - return fd.download(name, info) - if info_dict.get('requested_formats') is not None: - downloaded = [] - success = True - merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) - if not merger._executable: - postprocessors = [] - self.report_warning('You have requested multiple ' - 'formats but ffmpeg or avconv are not installed.' - ' The formats won\'t be merged') - else: - postprocessors = [merger] - for f in info_dict['requested_formats']: - new_info = dict(info_dict) - new_info.update(f) - fname = self.prepare_filename(new_info) - fname = prepend_extension(fname, 'f%s' % f['format_id']) - downloaded.append(fname) - partial_success = dl(fname, new_info) - success = success and partial_success - info_dict['__postprocessors'] = postprocessors - info_dict['__files_to_merge'] = downloaded + try: + def dl(name, info): + fd = get_suitable_downloader(info)(self, self.params) + for ph in self._progress_hooks: + fd.add_progress_hook(ph) + if self.params.get('verbose'): + self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) + return fd.download(name, info) + if info_dict.get('requested_formats') is not None: + downloaded = [] + success = True + merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) + if not merger._executable: + postprocessors = [] + self.report_warning('You have requested multiple ' + 'formats but ffmpeg or avconv are not installed.' + ' The formats won\'t be merged') else: - # Just a single file - success = dl(filename, info_dict) - except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: - self.report_error('unable to download video data: %s' % str(err)) - return - except (OSError, IOError) as err: - raise UnavailableVideoError(err) - except (ContentTooShortError, ) as err: - self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) - return + postprocessors = [merger] + for f in info_dict['requested_formats']: + new_info = dict(info_dict) + new_info.update(f) + fname = self.prepare_filename(new_info) + fname = prepend_extension(fname, 'f%s' % f['format_id']) + downloaded.append(fname) + partial_success = dl(fname, new_info) + success = success and partial_success + info_dict['__postprocessors'] = postprocessors + info_dict['__files_to_merge'] = downloaded + else: + # Just a single file + success = dl(filename, info_dict) + except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: + self.report_error('unable to download video data: %s' % str(err)) + return + except (OSError, IOError) as err: + raise UnavailableVideoError(err) + except (ContentTooShortError, ) as err: + self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) + return if success: + # Fixup content + stretched_ratio = info_dict.get('stretched_ratio') + if stretched_ratio is not None and stretched_ratio != 1: + fixup_policy = self.params.get('fixup') + if fixup_policy is None: + fixup_policy = 'detect_or_warn' + if fixup_policy == 'warn': + self.report_warning('%s: Non-uniform pixel ratio (%s)' % ( + info_dict['id'], stretched_ratio)) + elif fixup_policy == 'detect_or_warn': + stretched_pp = FFmpegFixupStretchedPP(self) + if stretched_pp.available: + info_dict.setdefault('__postprocessors', []) + info_dict['__postprocessors'].append(stretched_pp) + else: + self.report_warning( + '%s: Non-uniform pixel ratio (%s). Install ffmpeg or avconv to fix this automatically.' % ( + info_dict['id'], stretched_ratio)) + else: + assert fixup_policy == 'ignore' + try: self.post_process(filename, info_dict) except (PostProcessingError) as err: self.report_error('postprocessing: %s' % str(err)) return - - self.record_download_archive(info_dict) + self.record_download_archive(info_dict) def download(self, url_list): """Download a given list of URLs.""" @@ -1144,14 +1232,15 @@ class YoutubeDL(object): """Run all the postprocessors on the given file.""" info = dict(ie_info) info['filepath'] = filename - keep_video = None pps_chain = [] if ie_info.get('__postprocessors') is not None: pps_chain.extend(ie_info['__postprocessors']) pps_chain.extend(self._pps) for pp in pps_chain: + keep_video = None + old_filename = info['filepath'] try: - keep_video_wish, new_info = pp.run(info) + keep_video_wish, info = pp.run(info) if keep_video_wish is not None: if keep_video_wish: keep_video = keep_video_wish @@ -1160,12 +1249,12 @@ class YoutubeDL(object): keep_video = keep_video_wish except PostProcessingError as e: self.report_error(e.msg) - if keep_video is False and not self.params.get('keepvideo', False): - try: - self.to_screen('Deleting original file %s (pass -k to keep)' % filename) - os.remove(encodeFilename(filename)) - except (IOError, OSError): - self.report_warning('Unable to remove downloaded video file') + if keep_video is False and not self.params.get('keepvideo', False): + try: + self.to_screen('Deleting original file %s (pass -k to keep)' % old_filename) + os.remove(encodeFilename(old_filename)) + except (IOError, OSError): + self.report_warning('Unable to remove downloaded video file') def _make_archive_id(self, info_dict): # Future-proof against any change in case @@ -1285,7 +1374,9 @@ class YoutubeDL(object): formats = info_dict.get('formats', [info_dict]) idlen = max(len('format code'), max(len(f['format_id']) for f in formats)) - formats_s = [line(f, idlen) for f in formats] + formats_s = [ + line(f, idlen) for f in formats + if f.get('preference') is None or f['preference'] >= -1000] if len(formats) > 1: formats_s[0] += (' ' if self._format_note(formats[0]) else '') + '(worst)' formats_s[-1] += (' ' if self._format_note(formats[-1]) else '') + '(best)' @@ -1374,6 +1465,17 @@ class YoutubeDL(object): proxy_map.update(handler.proxies) self._write_string('[debug] Proxy map: ' + compat_str(proxy_map) + '\n') + if self.params.get('call_home', False): + ipaddr = self.urlopen('https://yt-dl.org/ip').read().decode('utf-8') + self._write_string('[debug] Public IP address: %s\n' % ipaddr) + latest_version = self.urlopen( + 'https://yt-dl.org/latest/version').read().decode('utf-8') + if version_tuple(latest_version) > version_tuple(__version__): + self.report_warning( + 'You are using an outdated version (newest version: %s)! ' + 'See https://yt-dl.org/update if you need help updating.' % + latest_version) + def _setup_opener(self): timeout_val = self.params.get('socket_timeout') self._socket_timeout = 600 if timeout_val is None else float(timeout_val) @@ -1404,9 +1506,8 @@ class YoutubeDL(object): proxy_handler = compat_urllib_request.ProxyHandler(proxies) debuglevel = 1 if self.params.get('debug_printtraffic') else 0 - https_handler = make_HTTPS_handler( - self.params.get('nocheckcertificate', False), debuglevel=debuglevel) - ydlh = YoutubeDLHandler(debuglevel=debuglevel) + https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel) + ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel) opener = compat_urllib_request.build_opener( https_handler, proxy_handler, cookie_processor, ydlh) # Delete the default user-agent header, which would otherwise apply in diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 77b3384..ddf6260 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -38,18 +38,8 @@ from .update import update_self from .downloader import ( FileDownloader, ) -from .extractor import gen_extractors +from .extractor import gen_extractors, list_extractors from .YoutubeDL import YoutubeDL -from .postprocessor import ( - AtomicParsleyPP, - FFmpegAudioFixPP, - FFmpegMetadataPP, - FFmpegVideoConvertor, - FFmpegExtractAudioPP, - FFmpegEmbedSubtitlePP, - XAttrMetadataPP, - ExecAfterDownloadPP, -) def _real_main(argv=None): @@ -105,24 +95,22 @@ def _real_main(argv=None): _enc = preferredencoding() all_urls = [url.decode(_enc, 'ignore') if isinstance(url, bytes) else url for url in all_urls] - extractors = gen_extractors() - if opts.list_extractors: - for ie in sorted(extractors, key=lambda ie: ie.IE_NAME.lower()): + for ie in list_extractors(opts.age_limit): compat_print(ie.IE_NAME + (' (CURRENTLY BROKEN)' if not ie._WORKING else '')) matchedUrls = [url for url in all_urls if ie.suitable(url)] for mu in matchedUrls: compat_print(' ' + mu) sys.exit(0) if opts.list_extractor_descriptions: - for ie in sorted(extractors, key=lambda ie: ie.IE_NAME.lower()): + for ie in list_extractors(opts.age_limit): if not ie._WORKING: continue desc = getattr(ie, 'IE_DESC', ie.IE_NAME) if desc is False: continue if hasattr(ie, 'SEARCH_KEY'): - _SEARCHES = ('cute kittens', 'slithering pythons', 'falling cat', 'angry poodle', 'purple fish', 'running tortoise', 'sleeping bunny') + _SEARCHES = ('cute kittens', 'slithering pythons', 'falling cat', 'angry poodle', 'purple fish', 'running tortoise', 'sleeping bunny', 'burping cow') _COUNTS = ('', '5', '10', 'all') desc += ' (Example: "%s%s:%s" )' % (ie.SEARCH_KEY, random.choice(_COUNTS), random.choice(_SEARCHES)) compat_print(desc) @@ -178,6 +166,7 @@ def _real_main(argv=None): if opts.recodevideo is not None: if opts.recodevideo not in ['mp4', 'flv', 'webm', 'ogg', 'mkv']: parser.error('invalid video recode format specified') + if opts.date is not None: date = DateRange.day(opts.date) else: @@ -209,16 +198,54 @@ def _real_main(argv=None): ' file! Use "{0}.%(ext)s" instead of "{0}" as the output' ' template'.format(outtmpl)) - any_printing = opts.geturl or opts.gettitle or opts.getid or opts.getthumbnail or opts.getdescription or opts.getfilename or opts.getformat or opts.getduration or opts.dumpjson or opts.dump_single_json + any_getting = opts.geturl or opts.gettitle or opts.getid or opts.getthumbnail or opts.getdescription or opts.getfilename or opts.getformat or opts.getduration or opts.dumpjson or opts.dump_single_json + any_printing = opts.print_json download_archive_fn = compat_expanduser(opts.download_archive) if opts.download_archive is not None else opts.download_archive + # PostProcessors + postprocessors = [] + # Add the metadata pp first, the other pps will copy it + if opts.addmetadata: + postprocessors.append({'key': 'FFmpegMetadata'}) + if opts.extractaudio: + postprocessors.append({ + 'key': 'FFmpegExtractAudio', + 'preferredcodec': opts.audioformat, + 'preferredquality': opts.audioquality, + 'nopostoverwrites': opts.nopostoverwrites, + }) + if opts.recodevideo: + postprocessors.append({ + 'key': 'FFmpegVideoConvertor', + 'preferedformat': opts.recodevideo, + }) + if opts.embedsubtitles: + postprocessors.append({ + 'key': 'FFmpegEmbedSubtitle', + 'subtitlesformat': opts.subtitlesformat, + }) + if opts.xattrs: + postprocessors.append({'key': 'XAttrMetadata'}) + if opts.embedthumbnail: + if not opts.addmetadata: + postprocessors.append({'key': 'FFmpegAudioFix'}) + postprocessors.append({'key': 'AtomicParsley'}) + # Please keep ExecAfterDownload towards the bottom as it allows the user to modify the final file in any way. + # So if the user is able to remove the file before your postprocessor runs it might cause a few problems. + if opts.exec_cmd: + postprocessors.append({ + 'key': 'ExecAfterDownload', + 'verboseOutput': opts.verbose, + 'exec_cmd': opts.exec_cmd, + }) + ydl_opts = { 'usenetrc': opts.usenetrc, 'username': opts.username, 'password': opts.password, 'twofactor': opts.twofactor, 'videopassword': opts.videopassword, - 'quiet': (opts.quiet or any_printing), + 'quiet': (opts.quiet or any_getting or any_printing), 'no_warnings': opts.no_warnings, 'forceurl': opts.geturl, 'forcetitle': opts.gettitle, @@ -228,9 +255,9 @@ def _real_main(argv=None): 'forceduration': opts.getduration, 'forcefilename': opts.getfilename, 'forceformat': opts.getformat, - 'forcejson': opts.dumpjson, + 'forcejson': opts.dumpjson or opts.print_json, 'dump_single_json': opts.dump_single_json, - 'simulate': opts.simulate or any_printing, + 'simulate': opts.simulate or any_getting, 'skip_download': opts.skip_download, 'format': opts.format, 'format_limit': opts.format_limit, @@ -249,6 +276,7 @@ def _real_main(argv=None): 'progress_with_newline': opts.progress_with_newline, 'playliststart': opts.playliststart, 'playlistend': opts.playlistend, + 'playlistreverse': opts.playlist_reverse, 'noplaylist': opts.noplaylist, 'logtostderr': opts.outtmpl == '-', 'consoletitle': opts.consoletitle, @@ -296,32 +324,14 @@ def _real_main(argv=None): 'encoding': opts.encoding, 'exec_cmd': opts.exec_cmd, 'extract_flat': opts.extract_flat, + 'merge_output_format': opts.merge_output_format, + 'postprocessors': postprocessors, + 'fixup': opts.fixup, + 'source_address': opts.source_address, + 'call_home': opts.call_home, } with YoutubeDL(ydl_opts) as ydl: - # PostProcessors - # Add the metadata pp first, the other pps will copy it - if opts.addmetadata: - ydl.add_post_processor(FFmpegMetadataPP()) - if opts.extractaudio: - ydl.add_post_processor(FFmpegExtractAudioPP(preferredcodec=opts.audioformat, preferredquality=opts.audioquality, nopostoverwrites=opts.nopostoverwrites)) - if opts.recodevideo: - ydl.add_post_processor(FFmpegVideoConvertor(preferedformat=opts.recodevideo)) - if opts.embedsubtitles: - ydl.add_post_processor(FFmpegEmbedSubtitlePP(subtitlesformat=opts.subtitlesformat)) - if opts.xattrs: - ydl.add_post_processor(XAttrMetadataPP()) - if opts.embedthumbnail: - if not opts.addmetadata: - ydl.add_post_processor(FFmpegAudioFixPP()) - ydl.add_post_processor(AtomicParsleyPP()) - - # Please keep ExecAfterDownload towards the bottom as it allows the user to modify the final file in any way. - # So if the user is able to remove the file before your postprocessor runs it might cause a few problems. - if opts.exec_cmd: - ydl.add_post_processor(ExecAfterDownloadPP( - verboseOutput=opts.verbose, exec_cmd=opts.exec_cmd)) - # Update version if opts.update_self: update_self(ydl.to_screen, opts.verbose) @@ -359,3 +369,5 @@ def main(argv=None): sys.exit('ERROR: fixed output name but more than one file to download') except KeyboardInterrupt: sys.exit('\nERROR: Interrupted by user') + +__all__ = ['main', 'YoutubeDL', 'gen_extractors', 'list_extractors'] diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index 2759668..4453b34 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -4,6 +4,7 @@ import getpass import optparse import os import re +import socket import subprocess import sys @@ -247,7 +248,7 @@ else: userhome = compat_getenv('HOME') elif 'USERPROFILE' in os.environ: userhome = compat_getenv('USERPROFILE') - elif not 'HOMEPATH' in os.environ: + elif 'HOMEPATH' not in os.environ: return path else: try: @@ -297,7 +298,9 @@ else: # Old 2.6 and 2.7 releases require kwargs to be bytes try: - (lambda x: x)(**{'x': 0}) + def _testfunc(x): + pass + _testfunc(**{'x': 0}) except TypeError: def compat_kwargs(kwargs): return dict((bytes(k), v) for k, v in kwargs.items()) @@ -305,6 +308,32 @@ else: compat_kwargs = lambda kwargs: kwargs +if sys.version_info < (2, 7): + def compat_socket_create_connection(address, timeout, source_address=None): + host, port = address + err = None + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + sock = None + try: + sock = socket.socket(af, socktype, proto) + sock.settimeout(timeout) + if source_address: + sock.bind(source_address) + sock.connect(sa) + return sock + except socket.error as _: + err = _ + if sock is not None: + sock.close() + if err is not None: + raise err + else: + raise socket.error("getaddrinfo returns an empty list") +else: + compat_socket_create_connection = socket.create_connection + + # Fix https://github.com/rg3/youtube-dl/issues/4223 # See http://bugs.python.org/issue9161 for what is broken def workaround_optparse_bug9161(): @@ -340,6 +369,7 @@ __all__ = [ 'compat_ord', 'compat_parse_qs', 'compat_print', + 'compat_socket_create_connection', 'compat_str', 'compat_subprocess_get_DEVNULL', 'compat_urllib_error', diff --git a/youtube_dl/downloader/common.py b/youtube_dl/downloader/common.py index c0af50c..de6b931 100644 --- a/youtube_dl/downloader/common.py +++ b/youtube_dl/downloader/common.py @@ -5,8 +5,8 @@ import re import sys import time +from ..compat import compat_str from ..utils import ( - compat_str, encodeFilename, format_bytes, timeconvert, @@ -80,6 +80,8 @@ class FileDownloader(object): def calc_eta(start, now, total, current): if total is None: return None + if now is None: + now = time.time() dif = now - start if current == 0 or dif < 0.001: # One millisecond return None @@ -146,18 +148,19 @@ class FileDownloader(object): def report_error(self, *args, **kargs): self.ydl.report_error(*args, **kargs) - def slow_down(self, start_time, byte_counter): + def slow_down(self, start_time, now, byte_counter): """Sleep if the download speed is over the rate limit.""" rate_limit = self.params.get('ratelimit', None) if rate_limit is None or byte_counter == 0: return - now = time.time() + if now is None: + now = time.time() elapsed = now - start_time if elapsed <= 0.0: return speed = float(byte_counter) / elapsed if speed > rate_limit: - time.sleep((byte_counter - rate_limit * (now - start_time)) / rate_limit) + time.sleep(max((byte_counter // rate_limit) - elapsed, 0)) def temp_name(self, filename): """Returns a temporary filename for the given filename.""" @@ -281,8 +284,19 @@ class FileDownloader(object): """Download to a filename using the info from info_dict Return True on success and False otherwise """ + nooverwrites_and_exists = ( + self.params.get('nooverwrites', False) + and os.path.exists(encodeFilename(filename)) + ) + + continuedl_and_exists = ( + self.params.get('continuedl', False) + and os.path.isfile(encodeFilename(filename)) + and not self.params.get('nopart', False) + ) + # Check file already present - if self.params.get('continuedl', False) and os.path.isfile(encodeFilename(filename)) and not self.params.get('nopart', False): + if filename != '-' and nooverwrites_and_exists or continuedl_and_exists: self.report_file_already_downloaded(filename) self._hook_progress({ 'filename': filename, @@ -302,19 +316,6 @@ class FileDownloader(object): ph(status) def add_progress_hook(self, ph): - """ ph gets called on download progress, with a dictionary with the entries - * filename: The final filename - * status: One of "downloading" and "finished" - - It can also have some of the following entries: - - * downloaded_bytes: Bytes on disks - * total_bytes: Total bytes, None if unknown - * tmpfilename: The filename we're currently writing to - * eta: The estimated time in seconds, None if unknown - * speed: The download speed in bytes/second, None if unknown - - Hooks are guaranteed to be called at least once (with status "finished") - if the download is successful. - """ + # See YoutubeDl.py (search for progress_hooks) for a description of + # this interface self._progress_hooks.append(ph) diff --git a/youtube_dl/downloader/f4m.py b/youtube_dl/downloader/f4m.py index 7cd22c5..c460c16 100644 --- a/youtube_dl/downloader/f4m.py +++ b/youtube_dl/downloader/f4m.py @@ -9,10 +9,12 @@ import xml.etree.ElementTree as etree from .common import FileDownloader from .http import HttpFD +from ..compat import ( + compat_urlparse, +) from ..utils import ( struct_pack, struct_unpack, - compat_urlparse, format_bytes, encodeFilename, sanitize_open, @@ -185,24 +187,34 @@ def build_fragments_list(boot_info): return res -def write_flv_header(stream, metadata): - """Writes the FLV header and the metadata to stream""" +def write_unsigned_int(stream, val): + stream.write(struct_pack('!I', val)) + + +def write_unsigned_int_24(stream, val): + stream.write(struct_pack('!I', val)[1:]) + + +def write_flv_header(stream): + """Writes the FLV header to stream""" # FLV header stream.write(b'FLV\x01') stream.write(b'\x05') stream.write(b'\x00\x00\x00\x09') - # FLV File body stream.write(b'\x00\x00\x00\x00') - # FLVTAG - # Script data - stream.write(b'\x12') - # Size of the metadata with 3 bytes - stream.write(struct_pack('!L', len(metadata))[1:]) - stream.write(b'\x00\x00\x00\x00\x00\x00\x00') - stream.write(metadata) - # Magic numbers extracted from the output files produced by AdobeHDS.php - #(https://github.com/K-S-V/Scripts) - stream.write(b'\x00\x00\x01\x73') + + +def write_metadata_tag(stream, metadata): + """Writes optional metadata tag to stream""" + SCRIPT_TAG = b'\x12' + FLV_TAG_HEADER_LEN = 11 + + if metadata: + stream.write(SCRIPT_TAG) + write_unsigned_int_24(stream, len(metadata)) + stream.write(b'\x00\x00\x00\x00\x00\x00\x00') + stream.write(metadata) + write_unsigned_int(stream, FLV_TAG_HEADER_LEN + len(metadata)) def _add_ns(prop): @@ -231,6 +243,7 @@ class F4mFD(FileDownloader): 'continuedl': True, 'quiet': True, 'noprogress': True, + 'ratelimit': self.params.get('ratelimit', None), 'test': self.params.get('test', False), } ) @@ -253,7 +266,11 @@ class F4mFD(FileDownloader): bootstrap = self.ydl.urlopen(bootstrap_url).read() else: bootstrap = base64.b64decode(bootstrap_node.text) - metadata = base64.b64decode(media.find(_add_ns('metadata')).text) + metadata_node = media.find(_add_ns('metadata')) + if metadata_node is not None: + metadata = base64.b64decode(metadata_node.text) + else: + metadata = None boot_info = read_bootstrap_info(bootstrap) fragments_list = build_fragments_list(boot_info) @@ -266,7 +283,8 @@ class F4mFD(FileDownloader): tmpfilename = self.temp_name(filename) (dest_stream, tmpfilename) = sanitize_open(tmpfilename, 'wb') - write_flv_header(dest_stream, metadata) + write_flv_header(dest_stream) + write_metadata_tag(dest_stream, metadata) # This dict stores the download progress, it's updated by the progress # hook diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 954beff..aa58b52 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -4,11 +4,13 @@ import os import re import subprocess +from ..postprocessor.ffmpeg import FFmpegPostProcessor from .common import FileDownloader -from ..utils import ( +from ..compat import ( compat_urlparse, compat_urllib_request, - check_executable, +) +from ..utils import ( encodeFilename, ) @@ -24,12 +26,12 @@ class HlsFD(FileDownloader): '-bsf:a', 'aac_adtstoasc', encodeFilename(tmpfilename, for_subprocess=True)] - for program in ['avconv', 'ffmpeg']: - if check_executable(program, ['-version']): - break - else: + ffpp = FFmpegPostProcessor(downloader=self) + program = ffpp._executable + if program is None: self.report_error('m3u8 download detected but ffmpeg or avconv could not be found. Please install one.') return False + ffpp.check_version() cmd = [program] + args retval = subprocess.call(cmd) diff --git a/youtube_dl/downloader/http.py b/youtube_dl/downloader/http.py index 8491cee..e68f20c 100644 --- a/youtube_dl/downloader/http.py +++ b/youtube_dl/downloader/http.py @@ -4,11 +4,12 @@ import os import time from .common import FileDownloader -from ..utils import ( +from ..compat import ( compat_urllib_request, compat_urllib_error, +) +from ..utils import ( ContentTooShortError, - encodeFilename, sanitize_open, format_bytes, @@ -136,16 +137,21 @@ class HttpFD(FileDownloader): byte_counter = 0 + resume_len block_size = self.params.get('buffersize', 1024) start = time.time() + + # measure time over whole while-loop, so slow_down() and best_block_size() work together properly + now = None # needed for slow_down() in the first loop run + before = start # start measuring while True: + # Download and write - before = time.time() data_block = data.read(block_size if not is_test else min(block_size, data_len - byte_counter)) - after = time.time() + byte_counter += len(data_block) + + # exit loop when download is finished if len(data_block) == 0: break - byte_counter += len(data_block) - # Open file just in time + # Open destination file just in time if stream is None: try: (stream, tmpfilename) = sanitize_open(tmpfilename, open_mode) @@ -161,11 +167,22 @@ class HttpFD(FileDownloader): self.to_stderr('\n') self.report_error('unable to write data: %s' % str(err)) return False + + # Apply rate limit + self.slow_down(start, now, byte_counter - resume_len) + + # end measuring of one loop run + now = time.time() + after = now + + # Adjust block size if not self.params.get('noresizebuffer', False): block_size = self.best_block_size(after - before, len(data_block)) + before = after + # Progress message - speed = self.calc_speed(start, time.time(), byte_counter - resume_len) + speed = self.calc_speed(start, now, byte_counter - resume_len) if data_len is None: eta = percent = None else: @@ -186,9 +203,6 @@ class HttpFD(FileDownloader): if is_test and byte_counter == data_len: break - # Apply rate limit - self.slow_down(start, byte_counter - resume_len) - if stream is None: self.to_stderr('\n') self.report_error('Did not get any data blocks') diff --git a/youtube_dl/downloader/mplayer.py b/youtube_dl/downloader/mplayer.py index c53195d..72cef30 100644 --- a/youtube_dl/downloader/mplayer.py +++ b/youtube_dl/downloader/mplayer.py @@ -4,8 +4,8 @@ import os import subprocess from .common import FileDownloader -from ..compat import compat_subprocess_get_DEVNULL from ..utils import ( + check_executable, encodeFilename, ) @@ -20,11 +20,7 @@ class MplayerFD(FileDownloader): 'mplayer', '-really-quiet', '-vo', 'null', '-vc', 'dummy', '-dumpstream', '-dumpfile', tmpfilename, url] # Check for mplayer first - try: - subprocess.call( - ['mplayer', '-h'], - stdout=compat_subprocess_get_DEVNULL(), stderr=subprocess.STDOUT) - except (OSError, IOError): + if not check_executable('mplayer', ['-h']): self.report_error('MMS or RTSP download detected but "%s" could not be run' % args[0]) return False diff --git a/youtube_dl/downloader/rtmp.py b/youtube_dl/downloader/rtmp.py index 58ae200..5346cb9 100644 --- a/youtube_dl/downloader/rtmp.py +++ b/youtube_dl/downloader/rtmp.py @@ -7,9 +7,9 @@ import sys import time from .common import FileDownloader +from ..compat import compat_str from ..utils import ( check_executable, - compat_str, encodeFilename, format_bytes, get_exe_version, @@ -185,7 +185,7 @@ class RtmpFD(FileDownloader): cursize = os.path.getsize(encodeFilename(tmpfilename)) if prevsize == cursize and retval == RD_FAILED: break - # Some rtmp streams seem abort after ~ 99.8%. Don't complain for those + # Some rtmp streams seem abort after ~ 99.8%. Don't complain for those if prevsize == cursize and retval == RD_INCOMPLETE and cursize > 1024: self.to_screen('[rtmpdump] Could not download the whole video. This can happen for some advertisements.') retval = RD_SUCCESS diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 0339d13..0902eb4 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -3,8 +3,11 @@ from __future__ import unicode_literals from .abc import ABCIE from .academicearth import AcademicEarthCourseIE from .addanime import AddAnimeIE +from .adobetv import AdobeTVIE from .adultswim import AdultSwimIE from .aftonbladet import AftonbladetIE +from .aljazeera import AlJazeeraIE +from .alphaporno import AlphaPornoIE from .anitube import AnitubeIE from .anysex import AnySexIE from .aol import AolIE @@ -22,13 +25,17 @@ from .arte import ( ArteTVDDCIE, ArteTVEmbedIE, ) -from .audiomack import AudiomackIE +from .atresplayer import AtresPlayerIE +from .atttechchannel import ATTTechChannelIE +from .audiomack import AudiomackIE, AudiomackAlbumIE from .auengine import AUEngineIE +from .azubu import AzubuIE from .bambuser import BambuserIE, BambuserChannelIE from .bandcamp import BandcampIE, BandcampAlbumIE from .bbccouk import BBCCoUkIE from .beeg import BeegIE from .behindkink import BehindKinkIE +from .bet import BetIE from .bild import BildIE from .bilibili import BiliBiliIE from .blinkx import BlinkxIE @@ -49,7 +56,7 @@ from .cbsnews import CBSNewsIE from .ceskatelevize import CeskaTelevizeIE from .channel9 import Channel9IE from .chilloutzone import ChilloutzoneIE -from .cinemassacre import CinemassacreIE +from .cinchcast import CinchcastIE from .clipfish import ClipfishIE from .cliphunter import CliphunterIE from .clipsyndicate import ClipsyndicateIE @@ -60,9 +67,13 @@ from .cnet import CNETIE from .cnn import ( CNNIE, CNNBlogsIE, + CNNArticleIE, ) from .collegehumor import CollegeHumorIE +from .collegerama import CollegeRamaIE from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE +from .comcarcoff import ComCarCoffIE +from .commonmistakes import CommonMistakesIE from .condenast import CondeNastIE from .cracked import CrackedIE from .criterion import CriterionIE @@ -82,14 +93,17 @@ from .deezer import DeezerPlaylistIE from .dfb import DFBIE from .dotsub import DotsubIE from .dreisat import DreiSatIE +from .drbonanza import DRBonanzaIE from .drtuber import DrTuberIE from .drtv import DRTVIE +from .dvtv import DVTVIE from .dump import DumpIE from .defense import DefenseGouvFrIE from .discovery import DiscoveryIE from .divxstage import DivxStageIE from .dropbox import DropboxIE from .ebaumsworld import EbaumsWorldIE +from .echomsk import EchoMskIE from .ehow import EHowIE from .eighttracks import EightTracksIE from .einthusan import EinthusanIE @@ -102,6 +116,7 @@ from .elpais import ElPaisIE from .empflix import EMPFlixIE from .engadget import EngadgetIE from .eporner import EpornerIE +from .eroprofile import EroProfileIE from .escapist import EscapistIE from .everyonesmixtape import EveryonesMixtapeIE from .exfm import ExfmIE @@ -121,6 +136,8 @@ from .fktv import ( from .flickr import FlickrIE from .folketinget import FolketingetIE from .fourtube import FourTubeIE +from .foxgay import FoxgayIE +from .foxnews import FoxNewsIE from .franceculture import FranceCultureIE from .franceinter import FranceInterIE from .francetv import ( @@ -144,6 +161,8 @@ from .gamestar import GameStarIE from .gametrailers import GametrailersIE from .gdcvault import GDCVaultIE from .generic import GenericIE +from .giantbomb import GiantBombIE +from .giga import GigaIE from .glide import GlideIE from .globo import GloboIE from .godtube import GodTubeIE @@ -154,10 +173,13 @@ from .googlesearch import GoogleSearchIE from .gorillavid import GorillaVidIE from .goshgay import GoshgayIE from .grooveshark import GroovesharkIE +from .groupon import GrouponIE from .hark import HarkIE from .heise import HeiseIE +from .hellporno import HellPornoIE from .helsinki import HelsinkiIE from .hentaistigma import HentaiStigmaIE +from .hitbox import HitboxIE, HitboxLiveIE from .hornbunny import HornBunnyIE from .hostingbulk import HostingBulkIE from .hotnewhiphop import HotNewHipHopIE @@ -187,6 +209,7 @@ from .jove import JoveIE from .jukebox import JukeboxIE from .jpopsukitv import JpopsukiIE from .kankan import KankanIE +from .karaoketv import KaraoketvIE from .keezmovies import KeezMoviesIE from .khanacademy import KhanAcademyIE from .kickstarter import KickStarterIE @@ -203,6 +226,7 @@ from .livestream import ( LivestreamOriginalIE, LivestreamShortenerIE, ) +from .lnkgo import LnkGoIE from .lrt import LRTIE from .lynda import ( LyndaIE, @@ -216,6 +240,7 @@ from .mdr import MDRIE from .metacafe import MetacafeIE from .metacritic import MetacriticIE from .mgoon import MgoonIE +from .minhateca import MinhatecaIE from .ministrygrid import MinistryGridIE from .mit import TechTVMITIE, MITIE, OCWMITIE from .mitele import MiTeleIE @@ -245,6 +270,7 @@ from .muzu import MuzuTVIE from .myspace import MySpaceIE, MySpaceAlbumIE from .myspass import MySpassIE from .myvideo import MyVideoIE +from .myvidster import MyVidsterIE from .naver import NaverIE from .nba import NBAIE from .nbc import ( @@ -253,6 +279,8 @@ from .nbc import ( ) from .ndr import NDRIE from .ndtv import NDTVIE +from .netzkino import NetzkinoIE +from .nerdcubed import NerdCubedFeedIE from .newgrounds import NewgroundsIE from .newstube import NewstubeIE from .nfb import NFBIE @@ -268,6 +296,7 @@ from .nowness import NownessIE from .nowvideo import NowVideoIE from .npo import ( NPOIE, + NPOLiveIE, TegenlichtVproIE, ) from .nrk import ( @@ -279,6 +308,7 @@ from .nytimes import NYTimesIE from .nuvid import NuvidIE from .oktoberfesttv import OktoberfestTVIE from .ooyala import OoyalaIE +from .openfilm import OpenFilmIE from .orf import ( ORFTVthekIE, ORFOE1IE, @@ -302,24 +332,30 @@ from .promptfile import PromptFileIE from .prosiebensat1 import ProSiebenSat1IE from .pyvideo import PyvideoIE from .quickvid import QuickVidIE +from .radiode import RadioDeIE +from .radiobremen import RadioBremenIE from .radiofrance import RadioFranceIE from .rai import RaiIE from .rbmaradio import RBMARadioIE from .redtube import RedTubeIE +from .restudy import RestudyIE from .reverbnation import ReverbNationIE from .ringtv import RingTVIE from .ro220 import Ro220IE from .rottentomatoes import RottenTomatoesIE from .roxwel import RoxwelIE from .rtbf import RTBFIE +from .rte import RteIE from .rtlnl import RtlXlIE from .rtlnow import RTLnowIE +from .rtp import RTPIE from .rts import RTSIE from .rtve import RTVEALaCartaIE, RTVELiveIE from .ruhd import RUHDIE from .rutube import ( RutubeIE, RutubeChannelIE, + RutubeEmbedIE, RutubeMovieIE, RutubePersonIE, ) @@ -329,6 +365,8 @@ from .savefrom import SaveFromIE from .sbs import SBSIE from .scivee import SciVeeIE from .screencast import ScreencastIE +from .screencastomatic import ScreencastOMaticIE +from .screenwavemedia import CinemassacreIE, ScreenwaveMediaIE, TeamFourIE from .servingsys import ServingSysIE from .sexu import SexuIE from .sexykarma import SexyKarmaIE @@ -388,6 +426,7 @@ from .ted import TEDIE from .telebruxelles import TeleBruxellesIE from .telecinco import TelecincoIE from .telemb import TeleMBIE +from .teletask import TeleTaskIE from .tenplay import TenPlayIE from .testurl import TestURLIE from .tf1 import TF1IE @@ -415,8 +454,9 @@ from .tunein import TuneInIE from .turbo import TurboIE from .tutv import TutvIE from .tvigle import TvigleIE -from .tvp import TvpIE +from .tvp import TvpIE, TvpSeriesIE from .tvplay import TVPlayIE +from .twentyfourvideo import TwentyFourVideoIE from .twitch import TwitchIE from .ubu import UbuIE from .udemy import ( @@ -445,6 +485,7 @@ from .videott import VideoTtIE from .videoweed import VideoWeedIE from .vidme import VidmeIE from .vidzi import VidziIE +from .vier import VierIE, VierVideosIE from .vimeo import ( VimeoIE, VimeoAlbumIE, @@ -480,6 +521,7 @@ from .wdr import ( WDRMobileIE, WDRMausIE, ) +from .webofstories import WebOfStoriesIE from .weibo import WeiboIE from .wimp import WimpIE from .wistia import WistiaIE @@ -492,10 +534,12 @@ from .xminus import XMinusIE from .xnxx import XNXXIE from .xvideos import XVideosIE from .xtube import XTubeUserIE, XTubeIE +from .xxxymovies import XXXYMoviesIE from .yahoo import ( YahooIE, YahooSearchIE, ) +from .yesjapan import YesJapanIE from .ynet import YnetIE from .youjizz import YouJizzIE from .youku import YoukuIE @@ -513,12 +557,12 @@ from .youtube import ( YoutubeSearchURLIE, YoutubeShowIE, YoutubeSubscriptionsIE, - YoutubeTopListIE, + YoutubeTruncatedIDIE, YoutubeTruncatedURLIE, YoutubeUserIE, YoutubeWatchLaterIE, ) -from .zdf import ZDFIE +from .zdf import ZDFIE, ZDFChannelIE from .zingmp3 import ( ZingMp3SongIE, ZingMp3AlbumIE, @@ -539,6 +583,17 @@ def gen_extractors(): return [klass() for klass in _ALL_CLASSES] +def list_extractors(age_limit): + """ + Return a list of extractors that are suitable for the given age, + sorted by extractor ID. + """ + + return sorted( + filter(lambda ie: ie.is_suitable(age_limit), gen_extractors()), + key=lambda ie: ie.IE_NAME.lower()) + + def get_info_extractor(ie_name): """Returns the info extractor class with the given ie_name""" return globals()[ie_name + 'IE'] diff --git a/youtube_dl/extractor/adobetv.py b/youtube_dl/extractor/adobetv.py new file mode 100644 index 0000000..28e07f8 --- /dev/null +++ b/youtube_dl/extractor/adobetv.py @@ -0,0 +1,70 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + parse_duration, + unified_strdate, + str_to_int, +) + + +class AdobeTVIE(InfoExtractor): + _VALID_URL = r'https?://tv\.adobe\.com/watch/[^/]+/(?P[^/]+)' + + _TEST = { + 'url': 'http://tv.adobe.com/watch/the-complete-picture-with-julieanne-kost/quick-tip-how-to-draw-a-circle-around-an-object-in-photoshop/', + 'md5': '9bc5727bcdd55251f35ad311ca74fa1e', + 'info_dict': { + 'id': 'quick-tip-how-to-draw-a-circle-around-an-object-in-photoshop', + 'ext': 'mp4', + 'title': 'Quick Tip - How to Draw a Circle Around an Object in Photoshop', + 'description': 'md5:99ec318dc909d7ba2a1f2b038f7d2311', + 'thumbnail': 're:https?://.*\.jpg$', + 'upload_date': '20110914', + 'duration': 60, + 'view_count': int, + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + player = self._parse_json( + self._search_regex(r'html5player:\s*({.+?})\s*\n', webpage, 'player'), + video_id) + + title = player.get('title') or self._search_regex( + r'data-title="([^"]+)"', webpage, 'title') + description = self._og_search_description(webpage) + thumbnail = self._og_search_thumbnail(webpage) + + upload_date = unified_strdate( + self._html_search_meta('datepublished', webpage, 'upload date')) + + duration = parse_duration( + self._html_search_meta('duration', webpage, 'duration') + or self._search_regex(r'Runtime:\s*(\d{2}:\d{2}:\d{2})', webpage, 'duration')) + + view_count = str_to_int(self._search_regex( + r'

    ', + webpage, 'view count')) + + formats = [{ + 'url': source['src'], + 'format_id': source.get('quality') or source['src'].split('-')[-1].split('.')[0] or None, + 'tbr': source.get('bitrate'), + } for source in player['sources']] + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'upload_date': upload_date, + 'duration': duration, + 'view_count': view_count, + 'formats': formats, + } diff --git a/youtube_dl/extractor/adultswim.py b/youtube_dl/extractor/adultswim.py index 0d05cbb..502a9c2 100644 --- a/youtube_dl/extractor/adultswim.py +++ b/youtube_dl/extractor/adultswim.py @@ -2,123 +2,150 @@ from __future__ import unicode_literals import re +import json from .common import InfoExtractor +from ..utils import ( + ExtractorError, + xpath_text, + float_or_none, +) class AdultSwimIE(InfoExtractor): - _VALID_URL = r'https?://video\.adultswim\.com/(?P.+?)(?:\.html)?(?:\?.*)?(?:#.*)?$' - _TEST = { - 'url': 'http://video.adultswim.com/rick-and-morty/close-rick-counters-of-the-rick-kind.html?x=y#title', + _VALID_URL = r'https?://(?:www\.)?adultswim\.com/videos/(?Pplaylists/)?(?P[^/]+)/(?P[^/?#]+)/?' + + _TESTS = [{ + 'url': 'http://adultswim.com/videos/rick-and-morty/pilot', 'playlist': [ { - 'md5': '4da359ec73b58df4575cd01a610ba5dc', - 'info_dict': { - 'id': '8a250ba1450996e901453d7f02ca02f5', - 'ext': 'flv', - 'title': 'Rick and Morty Close Rick-Counters of the Rick Kind part 1', - 'description': 'Rick has a run in with some old associates, resulting in a fallout with Morty. You got any chips, broh?', - 'uploader': 'Rick and Morty', - 'thumbnail': 'http://i.cdn.turner.com/asfix/repository/8a250ba13f865824013fc9db8b6b0400/thumbnail_267549017116827057.jpg' - } - }, - { - 'md5': 'ffbdf55af9331c509d95350bd0cc1819', + 'md5': '247572debc75c7652f253c8daa51a14d', 'info_dict': { - 'id': '8a250ba1450996e901453d7f4bd102f6', + 'id': 'rQxZvXQ4ROaSOqq-or2Mow-0', 'ext': 'flv', - 'title': 'Rick and Morty Close Rick-Counters of the Rick Kind part 2', - 'description': 'Rick has a run in with some old associates, resulting in a fallout with Morty. You got any chips, broh?', - 'uploader': 'Rick and Morty', - 'thumbnail': 'http://i.cdn.turner.com/asfix/repository/8a250ba13f865824013fc9db8b6b0400/thumbnail_267549017116827057.jpg' - } + 'title': 'Rick and Morty - Pilot Part 1', + 'description': "Rick moves in with his daughter's family and establishes himself as a bad influence on his grandson, Morty. " + }, }, { - 'md5': 'b92409635540304280b4b6c36bd14a0a', + 'md5': '77b0e037a4b20ec6b98671c4c379f48d', 'info_dict': { - 'id': '8a250ba1450996e901453d7fa73c02f7', + 'id': 'rQxZvXQ4ROaSOqq-or2Mow-3', 'ext': 'flv', - 'title': 'Rick and Morty Close Rick-Counters of the Rick Kind part 3', - 'description': 'Rick has a run in with some old associates, resulting in a fallout with Morty. You got any chips, broh?', - 'uploader': 'Rick and Morty', - 'thumbnail': 'http://i.cdn.turner.com/asfix/repository/8a250ba13f865824013fc9db8b6b0400/thumbnail_267549017116827057.jpg' - } + 'title': 'Rick and Morty - Pilot Part 4', + 'description': "Rick moves in with his daughter's family and establishes himself as a bad influence on his grandson, Morty. " + }, }, + ], + 'info_dict': { + 'title': 'Rick and Morty - Pilot', + 'description': "Rick moves in with his daughter's family and establishes himself as a bad influence on his grandson, Morty. " + } + }, { + 'url': 'http://www.adultswim.com/videos/playlists/american-parenting/putting-francine-out-of-business/', + 'playlist': [ { - 'md5': 'e8818891d60e47b29cd89d7b0278156d', + 'md5': '2eb5c06d0f9a1539da3718d897f13ec5', 'info_dict': { - 'id': '8a250ba1450996e901453d7fc8ba02f8', + 'id': '-t8CamQlQ2aYZ49ItZCFog-0', 'ext': 'flv', - 'title': 'Rick and Morty Close Rick-Counters of the Rick Kind part 4', - 'description': 'Rick has a run in with some old associates, resulting in a fallout with Morty. You got any chips, broh?', - 'uploader': 'Rick and Morty', - 'thumbnail': 'http://i.cdn.turner.com/asfix/repository/8a250ba13f865824013fc9db8b6b0400/thumbnail_267549017116827057.jpg' - } + 'title': 'American Dad - Putting Francine Out of Business', + 'description': 'Stan hatches a plan to get Francine out of the real estate business.Watch more American Dad on [adult swim].' + }, } - ] - } - - _video_extensions = { - '3500': 'flv', - '640': 'mp4', - '150': 'mp4', - 'ipad': 'm3u8', - 'iphone': 'm3u8' - } - _video_dimensions = { - '3500': (1280, 720), - '640': (480, 270), - '150': (320, 180) - } + ], + 'info_dict': { + 'title': 'American Dad - Putting Francine Out of Business', + 'description': 'Stan hatches a plan to get Francine out of the real estate business.Watch more American Dad on [adult swim].' + }, + }] + + @staticmethod + def find_video_info(collection, slug): + for video in collection.get('videos'): + if video.get('slug') == slug: + return video + + @staticmethod + def find_collection_by_linkURL(collections, linkURL): + for collection in collections: + if collection.get('linkURL') == linkURL: + return collection + + @staticmethod + def find_collection_containing_video(collections, slug): + for collection in collections: + for video in collection.get('videos'): + if video.get('slug') == slug: + return collection, video def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - video_path = mobj.group('path') - - webpage = self._download_webpage(url, video_path) - episode_id = self._html_search_regex( - r'', - webpage, 'episode_id') - title = self._og_search_title(webpage) - - index_url = 'http://asfix.adultswim.com/asfix-svc/episodeSearch/getEpisodesByIDs?networkName=AS&ids=%s' % episode_id - idoc = self._download_xml(index_url, title, 'Downloading episode index', 'Unable to download episode index') - - episode_el = idoc.find('.//episode') - show_title = episode_el.attrib.get('collectionTitle') - episode_title = episode_el.attrib.get('title') - thumbnail = episode_el.attrib.get('thumbnailUrl') - description = episode_el.find('./description').text.strip() + show_path = mobj.group('show_path') + episode_path = mobj.group('episode_path') + is_playlist = True if mobj.group('is_playlist') else False + + webpage = self._download_webpage(url, episode_path) + + # Extract the value of `bootstrappedData` from the Javascript in the page. + bootstrappedDataJS = self._search_regex(r'var bootstrappedData = ({.*});', webpage, episode_path) + + try: + bootstrappedData = json.loads(bootstrappedDataJS) + except ValueError as ve: + errmsg = '%s: Failed to parse JSON ' % episode_path + raise ExtractorError(errmsg, cause=ve) + + # Downloading videos from a /videos/playlist/ URL needs to be handled differently. + # NOTE: We are only downloading one video (the current one) not the playlist + if is_playlist: + collections = bootstrappedData['playlists']['collections'] + collection = self.find_collection_by_linkURL(collections, show_path) + video_info = self.find_video_info(collection, episode_path) + + show_title = video_info['showTitle'] + segment_ids = [video_info['videoPlaybackID']] + else: + collections = bootstrappedData['show']['collections'] + collection, video_info = self.find_collection_containing_video(collections, episode_path) + + show = bootstrappedData['show'] + show_title = show['title'] + segment_ids = [clip['videoPlaybackID'] for clip in video_info['clips']] + + episode_id = video_info['id'] + episode_title = video_info['title'] + episode_description = video_info['description'] + episode_duration = video_info.get('duration') entries = [] - segment_els = episode_el.findall('./segments/segment') + for part_num, segment_id in enumerate(segment_ids): + segment_url = 'http://www.adultswim.com/videos/api/v0/assets?id=%s&platform=mobile' % segment_id - for part_num, segment_el in enumerate(segment_els): - segment_id = segment_el.attrib.get('id') - segment_title = '%s %s part %d' % (show_title, episode_title, part_num + 1) - thumbnail = segment_el.attrib.get('thumbnailUrl') - duration = segment_el.attrib.get('duration') + segment_title = '%s - %s' % (show_title, episode_title) + if len(segment_ids) > 1: + segment_title += ' Part %d' % (part_num + 1) - segment_url = 'http://asfix.adultswim.com/asfix-svc/episodeservices/getCvpPlaylist?networkName=AS&id=%s' % segment_id idoc = self._download_xml( segment_url, segment_title, 'Downloading segment information', 'Unable to download segment information') + segment_duration = float_or_none( + xpath_text(idoc, './/trt', 'segment duration').strip()) + formats = [] file_els = idoc.findall('.//files/file') for file_el in file_els: bitrate = file_el.attrib.get('bitrate') - type = file_el.attrib.get('type') - width, height = self._video_dimensions.get(bitrate, (None, None)) + ftype = file_el.attrib.get('type') + formats.append({ - 'format_id': '%s-%s' % (bitrate, type), - 'url': file_el.text, - 'ext': self._video_extensions.get(bitrate, 'mp4'), + 'format_id': '%s_%s' % (bitrate, ftype), + 'url': file_el.text.strip(), # The bitrate may not be a number (for example: 'iphone') 'tbr': int(bitrate) if bitrate.isdigit() else None, - 'height': height, - 'width': width + 'quality': 1 if ftype == 'hd' else -1 }) self._sort_formats(formats) @@ -127,18 +154,16 @@ class AdultSwimIE(InfoExtractor): 'id': segment_id, 'title': segment_title, 'formats': formats, - 'uploader': show_title, - 'thumbnail': thumbnail, - 'duration': duration, - 'description': description + 'duration': segment_duration, + 'description': episode_description }) return { '_type': 'playlist', 'id': episode_id, - 'display_id': video_path, + 'display_id': episode_path, 'entries': entries, - 'title': '%s %s' % (show_title, episode_title), - 'description': description, - 'thumbnail': thumbnail + 'title': '%s - %s' % (show_title, episode_title), + 'description': episode_description, + 'duration': episode_duration } diff --git a/youtube_dl/extractor/aljazeera.py b/youtube_dl/extractor/aljazeera.py new file mode 100644 index 0000000..612708e --- /dev/null +++ b/youtube_dl/extractor/aljazeera.py @@ -0,0 +1,35 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class AlJazeeraIE(InfoExtractor): + _VALID_URL = r'http://www\.aljazeera\.com/programmes/.*?/(?P[^/]+)\.html' + + _TEST = { + 'url': 'http://www.aljazeera.com/programmes/the-slum/2014/08/deliverance-201482883754237240.html', + 'info_dict': { + 'id': '3792260579001', + 'ext': 'mp4', + 'title': 'The Slum - Episode 1: Deliverance', + 'description': 'As a birth attendant advocating for family planning, Remy is on the frontline of Tondo\'s battle with overcrowding.', + 'uploader': 'Al Jazeera English', + }, + 'add_ie': ['Brightcove'], + } + + def _real_extract(self, url): + program_name = self._match_id(url) + webpage = self._download_webpage(url, program_name) + brightcove_id = self._search_regex( + r'RenderPagesVideo\(\'(.+?)\'', webpage, 'brightcove id') + + return { + '_type': 'url', + 'url': ( + 'brightcove:' + 'playerKey=AQ~~%2CAAAAmtVJIFk~%2CTVGOQ5ZTwJbeMWnq5d_H4MOM57xfzApc' + '&%40videoPlayer={0}'.format(brightcove_id) + ), + 'ie_key': 'Brightcove', + } diff --git a/youtube_dl/extractor/allocine.py b/youtube_dl/extractor/allocine.py index 398e93b..7d65b81 100644 --- a/youtube_dl/extractor/allocine.py +++ b/youtube_dl/extractor/allocine.py @@ -5,15 +5,14 @@ import re import json from .common import InfoExtractor +from ..compat import compat_str from ..utils import ( - compat_str, qualities, - determine_ext, ) class AllocineIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?allocine\.fr/(?Particle|video|film)/(fichearticle_gen_carticle=|player_gen_cmedia=|fichefilm_gen_cfilm=)(?P[0-9]+)(?:\.html)?' + _VALID_URL = r'https?://(?:www\.)?allocine\.fr/(?Particle|video|film)/(fichearticle_gen_carticle=|player_gen_cmedia=|fichefilm_gen_cfilm=|video-)(?P[0-9]+)(?:\.html)?' _TESTS = [{ 'url': 'http://www.allocine.fr/article/fichearticle_gen_carticle=18635087.html', @@ -45,6 +44,9 @@ class AllocineIE(InfoExtractor): 'description': 'md5:71742e3a74b0d692c7fce0dd2017a4ac', 'thumbnail': 're:http://.*\.jpg', }, + }, { + 'url': 'http://www.allocine.fr/video/video-19550147/', + 'only_matching': True, }] def _real_extract(self, url): @@ -75,9 +77,7 @@ class AllocineIE(InfoExtractor): 'format_id': format_id, 'quality': quality(format_id), 'url': v, - 'ext': determine_ext(v), }) - self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/alphaporno.py b/youtube_dl/extractor/alphaporno.py new file mode 100644 index 0000000..c34719d --- /dev/null +++ b/youtube_dl/extractor/alphaporno.py @@ -0,0 +1,77 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + parse_iso8601, + parse_duration, + parse_filesize, + int_or_none, +) + + +class AlphaPornoIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?alphaporno\.com/videos/(?P[^/]+)' + _TEST = { + 'url': 'http://www.alphaporno.com/videos/sensual-striptease-porn-with-samantha-alexandra/', + 'md5': 'feb6d3bba8848cd54467a87ad34bd38e', + 'info_dict': { + 'id': '258807', + 'display_id': 'sensual-striptease-porn-with-samantha-alexandra', + 'ext': 'mp4', + 'title': 'Sensual striptease porn with Samantha Alexandra', + 'thumbnail': 're:https?://.*\.jpg$', + 'timestamp': 1418694611, + 'upload_date': '20141216', + 'duration': 387, + 'filesize_approx': 54120000, + 'tbr': 1145, + 'categories': list, + 'age_limit': 18, + } + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + video_id = self._search_regex( + r"video_id\s*:\s*'([^']+)'", webpage, 'video id', default=None) + + video_url = self._search_regex( + r"video_url\s*:\s*'([^']+)'", webpage, 'video url') + ext = self._html_search_meta( + 'encodingFormat', webpage, 'ext', default='.mp4')[1:] + + title = self._search_regex( + [r'', + r'class="title" itemprop="name">([^<]+)<'], + webpage, 'title') + thumbnail = self._html_search_meta('thumbnail', webpage, 'thumbnail') + timestamp = parse_iso8601(self._html_search_meta( + 'uploadDate', webpage, 'upload date')) + duration = parse_duration(self._html_search_meta( + 'duration', webpage, 'duration')) + filesize_approx = parse_filesize(self._html_search_meta( + 'contentSize', webpage, 'file size')) + bitrate = int_or_none(self._html_search_meta( + 'bitrate', webpage, 'bitrate')) + categories = self._html_search_meta( + 'keywords', webpage, 'categories', default='').split(',') + + age_limit = self._rta_search(webpage) + + return { + 'id': video_id, + 'display_id': display_id, + 'url': video_url, + 'ext': ext, + 'title': title, + 'thumbnail': thumbnail, + 'timestamp': timestamp, + 'duration': duration, + 'filesize_approx': filesize_approx, + 'tbr': bitrate, + 'categories': categories, + 'age_limit': age_limit, + } diff --git a/youtube_dl/extractor/aol.py b/youtube_dl/extractor/aol.py index 47f8e41..b51eafc 100644 --- a/youtube_dl/extractor/aol.py +++ b/youtube_dl/extractor/aol.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from .fivemin import FiveMinIE class AolIE(InfoExtractor): @@ -42,31 +41,30 @@ class AolIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id = mobj.group('id') - playlist_id = mobj.group('playlist_id') - if playlist_id and not self._downloader.params.get('noplaylist'): - self.to_screen('Downloading playlist %s - add --no-playlist to just download video %s' % (playlist_id, video_id)) + if not playlist_id or self._downloader.params.get('noplaylist'): + return self.url_result('5min:%s' % video_id) - webpage = self._download_webpage(url, playlist_id) - title = self._html_search_regex( - r'

    (.+?)

    ', webpage, 'title') - playlist_html = self._search_regex( - r"(?s)(.*?)", webpage, - 'playlist HTML') - entries = [{ - '_type': 'url', - 'url': 'aol-video:%s' % m.group('id'), - 'ie_key': 'Aol', - } for m in re.finditer( - r"[0-9]+)'\s+class='video-thumb'>", - playlist_html)] + self.to_screen('Downloading playlist %s - add --no-playlist to just download video %s' % (playlist_id, video_id)) - return { - '_type': 'playlist', - 'id': playlist_id, - 'display_id': mobj.group('playlist_display_id'), - 'title': title, - 'entries': entries, - } + webpage = self._download_webpage(url, playlist_id) + title = self._html_search_regex( + r'

    (.+?)

    ', webpage, 'title') + playlist_html = self._search_regex( + r"(?s)(.*?)", webpage, + 'playlist HTML') + entries = [{ + '_type': 'url', + 'url': 'aol-video:%s' % m.group('id'), + 'ie_key': 'Aol', + } for m in re.finditer( + r"[0-9]+)'\s+class='video-thumb'>", + playlist_html)] - return FiveMinIE._build_result(video_id) + return { + '_type': 'playlist', + 'id': playlist_id, + 'display_id': mobj.group('playlist_display_id'), + 'title': title, + 'entries': entries, + } diff --git a/youtube_dl/extractor/appletrailers.py b/youtube_dl/extractor/appletrailers.py index 0c01fa1..7cd0482 100644 --- a/youtube_dl/extractor/appletrailers.py +++ b/youtube_dl/extractor/appletrailers.py @@ -4,8 +4,8 @@ import re import json from .common import InfoExtractor +from ..compat import compat_urlparse from ..utils import ( - compat_urlparse, int_or_none, ) diff --git a/youtube_dl/extractor/archiveorg.py b/youtube_dl/extractor/archiveorg.py index 34ce842..9fc35a4 100644 --- a/youtube_dl/extractor/archiveorg.py +++ b/youtube_dl/extractor/archiveorg.py @@ -1,42 +1,48 @@ from __future__ import unicode_literals -import json -import re - from .common import InfoExtractor -from ..utils import ( - unified_strdate, -) +from ..utils import unified_strdate class ArchiveOrgIE(InfoExtractor): IE_NAME = 'archive.org' IE_DESC = 'archive.org videos' - _VALID_URL = r'(?:https?://)?(?:www\.)?archive\.org/details/(?P[^?/]+)(?:[?].*)?$' - _TEST = { - "url": "http://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect", - 'file': 'XD300-23_68HighlightsAResearchCntAugHumanIntellect.ogv', + _VALID_URL = r'https?://(?:www\.)?archive\.org/details/(?P[^?/]+)(?:[?].*)?$' + _TESTS = [{ + 'url': 'http://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect', 'md5': '8af1d4cf447933ed3c7f4871162602db', 'info_dict': { - "title": "1968 Demo - FJCC Conference Presentation Reel #1", - "description": "Reel 1 of 3: Also known as the \"Mother of All Demos\", Doug Engelbart's presentation at the Fall Joint Computer Conference in San Francisco, December 9, 1968 titled \"A Research Center for Augmenting Human Intellect.\" For this presentation, Doug and his team astonished the audience by not only relating their research, but demonstrating it live. This was the debut of the mouse, interactive computing, hypermedia, computer supported software engineering, video teleconferencing, etc. See also
    Doug's 1968 Demo page for more background, highlights, links, and the detailed paper published in this conference proceedings. Filmed on 3 reels: Reel 1 | Reel 2 | Reel 3", - "upload_date": "19681210", - "uploader": "SRI International" + 'id': 'XD300-23_68HighlightsAResearchCntAugHumanIntellect', + 'ext': 'ogv', + 'title': '1968 Demo - FJCC Conference Presentation Reel #1', + 'description': 'md5:1780b464abaca9991d8968c877bb53ed', + 'upload_date': '19681210', + 'uploader': 'SRI International' + } + }, { + 'url': 'https://archive.org/details/Cops1922', + 'md5': '18f2a19e6d89af8425671da1cf3d4e04', + 'info_dict': { + 'id': 'Cops1922', + 'ext': 'ogv', + 'title': 'Buster Keaton\'s "Cops" (1922)', + 'description': 'md5:70f72ee70882f713d4578725461ffcc3', } - } + }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) json_url = url + ('?' if '?' in url else '&') + 'output=json' - json_data = self._download_webpage(json_url, video_id) - data = json.loads(json_data) + data = self._download_json(json_url, video_id) + + def get_optional(data_dict, field): + return data_dict['metadata'].get(field, [None])[0] - title = data['metadata']['title'][0] - description = data['metadata']['description'][0] - uploader = data['metadata']['creator'][0] - upload_date = unified_strdate(data['metadata']['date'][0]) + title = get_optional(data, 'title') + description = get_optional(data, 'description') + uploader = get_optional(data, 'creator') + upload_date = unified_strdate(get_optional(data, 'date')) formats = [ { diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py index 219631b..929dd3c 100644 --- a/youtube_dl/extractor/arte.py +++ b/youtube_dl/extractor/arte.py @@ -37,7 +37,7 @@ class ArteTvIE(InfoExtractor): config_xml_url, video_id, note='Downloading configuration') formats = [{ - 'forma_id': q.attrib['quality'], + 'format_id': q.attrib['quality'], # The playpath starts at 'mp4:', if we don't manually # split the url, rtmpdump will incorrectly parse them 'url': q.text.split('mp4:', 1)[0], @@ -133,7 +133,7 @@ class ArteTVPlus7IE(InfoExtractor): 'width': int_or_none(f.get('width')), 'height': int_or_none(f.get('height')), 'tbr': int_or_none(f.get('bitrate')), - 'quality': qfunc(f['quality']), + 'quality': qfunc(f.get('quality')), 'source_preference': source_pref, } diff --git a/youtube_dl/extractor/atresplayer.py b/youtube_dl/extractor/atresplayer.py new file mode 100644 index 0000000..5db1941 --- /dev/null +++ b/youtube_dl/extractor/atresplayer.py @@ -0,0 +1,144 @@ +from __future__ import unicode_literals + +import time +import hmac + +from .common import InfoExtractor +from ..compat import ( + compat_str, + compat_urllib_parse, + compat_urllib_request, +) +from ..utils import ( + int_or_none, + float_or_none, + xpath_text, + ExtractorError, +) + + +class AtresPlayerIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?atresplayer\.com/television/[^/]+/[^/]+/[^/]+/(?P.+?)_\d+\.html' + _TESTS = [ + { + 'url': 'http://www.atresplayer.com/television/programas/el-club-de-la-comedia/temporada-4/capitulo-10-especial-solidario-nochebuena_2014122100174.html', + 'md5': 'efd56753cda1bb64df52a3074f62e38a', + 'info_dict': { + 'id': 'capitulo-10-especial-solidario-nochebuena', + 'ext': 'mp4', + 'title': 'Especial Solidario de Nochebuena', + 'description': 'md5:e2d52ff12214fa937107d21064075bf1', + 'duration': 5527.6, + 'thumbnail': 're:^https?://.*\.jpg$', + }, + }, + { + 'url': 'http://www.atresplayer.com/television/series/el-secreto-de-puente-viejo/el-chico-de-los-tres-lunares/capitulo-977-29-12-14_2014122400174.html', + 'only_matching': True, + }, + ] + + _USER_AGENT = 'Dalvik/1.6.0 (Linux; U; Android 4.3; GT-I9300 Build/JSS15J' + _MAGIC = 'QWtMLXs414Yo+c#_+Q#K@NN)' + _TIMESTAMP_SHIFT = 30000 + + _TIME_API_URL = 'http://servicios.atresplayer.com/api/admin/time.json' + _URL_VIDEO_TEMPLATE = 'https://servicios.atresplayer.com/api/urlVideo/{1}/{0}/{1}|{2}|{3}.json' + _PLAYER_URL_TEMPLATE = 'https://servicios.atresplayer.com/episode/getplayer.json?episodePk=%s' + _EPISODE_URL_TEMPLATE = 'http://www.atresplayer.com/episodexml/%s' + + _LOGIN_URL = 'https://servicios.atresplayer.com/j_spring_security_check' + + def _real_initialize(self): + self._login() + + def _login(self): + (username, password) = self._get_login_info() + if username is None: + return + + login_form = { + 'j_username': username, + 'j_password': password, + } + + request = compat_urllib_request.Request( + self._LOGIN_URL, compat_urllib_parse.urlencode(login_form).encode('utf-8')) + request.add_header('Content-Type', 'application/x-www-form-urlencoded') + response = self._download_webpage( + request, None, 'Logging in as %s' % username) + + error = self._html_search_regex( + r'(?s)
      (.+?)
    ', response, 'error', default=None) + if error: + raise ExtractorError( + 'Unable to login: %s' % error, expected=True) + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + episode_id = self._search_regex( + r'episode="([^"]+)"', webpage, 'episode id') + + timestamp = int_or_none(self._download_webpage( + self._TIME_API_URL, + video_id, 'Downloading timestamp', fatal=False), 1000, time.time()) + timestamp_shifted = compat_str(timestamp + self._TIMESTAMP_SHIFT) + token = hmac.new( + self._MAGIC.encode('ascii'), + (episode_id + timestamp_shifted).encode('utf-8') + ).hexdigest() + + formats = [] + for fmt in ['windows', 'android_tablet']: + request = compat_urllib_request.Request( + self._URL_VIDEO_TEMPLATE.format(fmt, episode_id, timestamp_shifted, token)) + request.add_header('Youtubedl-user-agent', self._USER_AGENT) + + fmt_json = self._download_json( + request, video_id, 'Downloading %s video JSON' % fmt) + + result = fmt_json.get('resultDes') + if result.lower() != 'ok': + raise ExtractorError( + '%s returned error: %s' % (self.IE_NAME, result), expected=True) + + for _, video_url in fmt_json['resultObject'].items(): + if video_url.endswith('/Manifest'): + formats.extend(self._extract_f4m_formats(video_url[:-9] + '/manifest.f4m', video_id)) + else: + formats.append({ + 'url': video_url, + 'format_id': 'android', + 'preference': 1, + }) + self._sort_formats(formats) + + player = self._download_json( + self._PLAYER_URL_TEMPLATE % episode_id, + episode_id) + + path_data = player.get('pathData') + + episode = self._download_xml( + self._EPISODE_URL_TEMPLATE % path_data, + video_id, 'Downloading episode XML') + + duration = float_or_none(xpath_text( + episode, './media/asset/info/technical/contentDuration', 'duration')) + + art = episode.find('./media/asset/info/art') + title = xpath_text(art, './name', 'title') + description = xpath_text(art, './description', 'description') + thumbnail = xpath_text(episode, './media/asset/files/background', 'thumbnail') + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, + 'formats': formats, + } diff --git a/youtube_dl/extractor/atttechchannel.py b/youtube_dl/extractor/atttechchannel.py new file mode 100644 index 0000000..b01d35b --- /dev/null +++ b/youtube_dl/extractor/atttechchannel.py @@ -0,0 +1,55 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import unified_strdate + + +class ATTTechChannelIE(InfoExtractor): + _VALID_URL = r'https?://techchannel\.att\.com/play-video\.cfm/([^/]+/)*(?P.+)' + _TEST = { + 'url': 'http://techchannel.att.com/play-video.cfm/2014/1/27/ATT-Archives-The-UNIX-System-Making-Computers-Easier-to-Use', + 'info_dict': { + 'id': '11316', + 'display_id': 'ATT-Archives-The-UNIX-System-Making-Computers-Easier-to-Use', + 'ext': 'flv', + 'title': 'AT&T Archives : The UNIX System: Making Computers Easier to Use', + 'description': 'A 1982 film about UNIX is the foundation for software in use around Bell Labs and AT&T.', + 'thumbnail': 're:^https?://.*\.jpg$', + 'upload_date': '20140127', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + video_url = self._search_regex( + r"url\s*:\s*'(rtmp://[^']+)'", + webpage, 'video URL') + + video_id = self._search_regex( + r'mediaid\s*=\s*(\d+)', + webpage, 'video id', fatal=False) + + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + thumbnail = self._og_search_thumbnail(webpage) + upload_date = unified_strdate(self._search_regex( + r'[Rr]elease\s+date:\s*(\d{1,2}/\d{1,2}/\d{4})', + webpage, 'upload date', fatal=False), False) + + return { + 'id': video_id, + 'display_id': display_id, + 'url': video_url, + 'ext': 'flv', + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'upload_date': upload_date, + } diff --git a/youtube_dl/extractor/audiomack.py b/youtube_dl/extractor/audiomack.py index eeeec76..8bfe502 100644 --- a/youtube_dl/extractor/audiomack.py +++ b/youtube_dl/extractor/audiomack.py @@ -1,11 +1,15 @@ # coding: utf-8 from __future__ import unicode_literals +import itertools +import time + from .common import InfoExtractor from .soundcloud import SoundcloudIE -from ..utils import ExtractorError - -import time +from ..utils import ( + ExtractorError, + url_basename, +) class AudiomackIE(InfoExtractor): @@ -17,53 +21,119 @@ class AudiomackIE(InfoExtractor): 'url': 'http://www.audiomack.com/song/roosh-williams/extraordinary', 'info_dict': { - 'id': 'roosh-williams/extraordinary', + 'id': '310086', 'ext': 'mp3', - 'title': 'Roosh Williams - Extraordinary' + 'uploader': 'Roosh Williams', + 'title': 'Extraordinary' } }, - # hosted on soundcloud via audiomack + # audiomack wrapper around soundcloud song { + 'add_ie': ['Soundcloud'], 'url': 'http://www.audiomack.com/song/xclusiveszone/take-kare', - 'file': '172419696.mp3', - 'info_dict': - { + 'info_dict': { + 'id': '172419696', 'ext': 'mp3', + 'description': 'md5:1fc3272ed7a635cce5be1568c2822997', 'title': 'Young Thug ft Lil Wayne - Take Kare', - "upload_date": "20141016", - "description": "New track produced by London On Da Track called “Take Kare\"\n\nhttp://instagram.com/theyoungthugworld\nhttps://www.facebook.com/ThuggerThuggerCashMoney\n", - "uploader": "Young Thug World" + 'uploader': 'Young Thug World', + 'upload_date': '20141016', } - } + }, ] def _real_extract(self, url): - video_id = self._match_id(url) + # URLs end with [uploader name]/[uploader title] + # this title is whatever the user types in, and is rarely + # the proper song title. Real metadata is in the api response + album_url_tag = self._match_id(url) + # Request the extended version of the api for extra fields like artist and title api_response = self._download_json( - "http://www.audiomack.com/api/music/url/song/%s?_=%d" % ( - video_id, time.time()), - video_id) + 'http://www.audiomack.com/api/music/url/song/%s?extended=1&_=%d' % ( + album_url_tag, time.time()), + album_url_tag) - if "url" not in api_response: - raise ExtractorError("Unable to deduce api url of song") - realurl = api_response["url"] + # API is inconsistent with errors + if 'url' not in api_response or not api_response['url'] or 'error' in api_response: + raise ExtractorError('Invalid url %s', url) # Audiomack wraps a lot of soundcloud tracks in their branded wrapper - # - if so, pass the work off to the soundcloud extractor - if SoundcloudIE.suitable(realurl): - return {'_type': 'url', 'url': realurl, 'ie_key': 'Soundcloud'} - - webpage = self._download_webpage(url, video_id) - artist = self._html_search_regex( - r'(.*?)', webpage, "artist") - songtitle = self._html_search_regex( - r'

    .*?(.*?)

    ', - webpage, "title") - title = artist + " - " + songtitle + # if so, pass the work off to the soundcloud extractor + if SoundcloudIE.suitable(api_response['url']): + return {'_type': 'url', 'url': api_response['url'], 'ie_key': 'Soundcloud'} return { - 'id': video_id, - 'title': title, - 'url': realurl, + 'id': api_response.get('id', album_url_tag), + 'uploader': api_response.get('artist'), + 'title': api_response.get('title'), + 'url': api_response['url'], + } + + +class AudiomackAlbumIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?audiomack\.com/album/(?P[\w/-]+)' + IE_NAME = 'audiomack:album' + _TESTS = [ + # Standard album playlist + { + 'url': 'http://www.audiomack.com/album/flytunezcom/tha-tour-part-2-mixtape', + 'playlist_count': 15, + 'info_dict': + { + 'id': '812251', + 'title': 'Tha Tour: Part 2 (Official Mixtape)' + } + }, + # Album playlist ripped from fakeshoredrive with no metadata + { + 'url': 'http://www.audiomack.com/album/fakeshoredrive/ppp-pistol-p-project', + 'playlist': [{ + 'info_dict': { + 'title': '9.-heaven-or-hell-chimaca-ft-zuse-prod-by-dj-fu', + 'id': '9.-heaven-or-hell-chimaca-ft-zuse-prod-by-dj-fu', + 'ext': 'mp3', + } + }], + 'params': { + 'playliststart': 8, + 'playlistend': 8, + } } + ] + + def _real_extract(self, url): + # URLs end with [uploader name]/[uploader title] + # this title is whatever the user types in, and is rarely + # the proper song title. Real metadata is in the api response + album_url_tag = self._match_id(url) + result = {'_type': 'playlist', 'entries': []} + # There is no one endpoint for album metadata - instead it is included/repeated in each song's metadata + # Therefore we don't know how many songs the album has and must infi-loop until failure + for track_no in itertools.count(): + # Get song's metadata + api_response = self._download_json( + 'http://www.audiomack.com/api/music/url/album/%s/%d?extended=1&_=%d' + % (album_url_tag, track_no, time.time()), album_url_tag, + note='Querying song information (%d)' % (track_no + 1)) + + # Total failure, only occurs when url is totally wrong + # Won't happen in middle of valid playlist (next case) + if 'url' not in api_response or 'error' in api_response: + raise ExtractorError('Invalid url for track %d of album url %s' % (track_no, url)) + # URL is good but song id doesn't exist - usually means end of playlist + elif not api_response['url']: + break + else: + # Pull out the album metadata and add to result (if it exists) + for resultkey, apikey in [('id', 'album_id'), ('title', 'album_title')]: + if apikey in api_response and resultkey not in result: + result[resultkey] = api_response[apikey] + song_id = url_basename(api_response['url']).rpartition('.')[0] + result['entries'].append({ + 'id': api_response.get('id', song_id), + 'uploader': api_response.get('artist'), + 'title': api_response.get('title', song_id), + 'url': api_response['url'], + }) + return result diff --git a/youtube_dl/extractor/auengine.py b/youtube_dl/extractor/auengine.py index 1c76553..a1b666b 100644 --- a/youtube_dl/extractor/auengine.py +++ b/youtube_dl/extractor/auengine.py @@ -3,10 +3,11 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from ..compat import compat_urllib_parse from ..utils import ( - compat_urllib_parse, determine_ext, ExtractorError, + remove_end, ) @@ -27,23 +28,18 @@ class AUEngineIE(InfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - title = self._html_search_regex(r'(?P<title>.+?)', webpage, 'title') - title = title.strip() - links = re.findall(r'\s(?:file|url):\s*["\']([^\'"]+)["\']', webpage) - links = map(compat_urllib_parse.unquote, links) - - thumbnail = None - video_url = None - for link in links: - if link.endswith('.png'): - thumbnail = link - elif '/videos/' in link: - video_url = link + title = self._html_search_regex( + r'\s*(?P<title>.+?)\s*', webpage, 'title') + video_urls = re.findall(r'http://\w+.auengine.com/vod/.*[^\W]', webpage) + video_url = compat_urllib_parse.unquote(video_urls[0]) + thumbnails = re.findall(r'http://\w+.auengine.com/thumb/.*[^\W]', webpage) + thumbnail = compat_urllib_parse.unquote(thumbnails[0]) + if not video_url: raise ExtractorError('Could not find video URL') + ext = '.' + determine_ext(video_url) - if ext == title[-len(ext):]: - title = title[:-len(ext)] + title = remove_end(title, ext) return { 'id': video_id, diff --git a/youtube_dl/extractor/azubu.py b/youtube_dl/extractor/azubu.py new file mode 100644 index 0000000..0961d33 --- /dev/null +++ b/youtube_dl/extractor/azubu.py @@ -0,0 +1,93 @@ +from __future__ import unicode_literals + +import json + +from .common import InfoExtractor +from ..utils import float_or_none + + +class AzubuIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?azubu\.tv/[^/]+#!/play/(?P\d+)' + _TESTS = [ + { + 'url': 'http://www.azubu.tv/GSL#!/play/15575/2014-hot6-cup-last-big-match-ro8-day-1', + 'md5': 'a88b42fcf844f29ad6035054bd9ecaf4', + 'info_dict': { + 'id': '15575', + 'ext': 'mp4', + 'title': '2014 HOT6 CUP LAST BIG MATCH Ro8 Day 1', + 'description': 'md5:d06bdea27b8cc4388a90ad35b5c66c01', + 'thumbnail': 're:^https?://.*\.jpe?g', + 'timestamp': 1417523507.334, + 'upload_date': '20141202', + 'duration': 9988.7, + 'uploader': 'GSL', + 'uploader_id': 414310, + 'view_count': int, + }, + }, + { + 'url': 'http://www.azubu.tv/FnaticTV#!/play/9344/-fnatic-at-worlds-2014:-toyz---%22i-love-rekkles,-he-has-amazing-mechanics%22-', + 'md5': 'b72a871fe1d9f70bd7673769cdb3b925', + 'info_dict': { + 'id': '9344', + 'ext': 'mp4', + 'title': 'Fnatic at Worlds 2014: Toyz - "I love Rekkles, he has amazing mechanics"', + 'description': 'md5:4a649737b5f6c8b5c5be543e88dc62af', + 'thumbnail': 're:^https?://.*\.jpe?g', + 'timestamp': 1410530893.320, + 'upload_date': '20140912', + 'duration': 172.385, + 'uploader': 'FnaticTV', + 'uploader_id': 272749, + 'view_count': int, + }, + }, + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + + data = self._download_json( + 'http://www.azubu.tv/api/video/%s' % video_id, video_id)['data'] + + title = data['title'].strip() + description = data['description'] + thumbnail = data['thumbnail'] + view_count = data['view_count'] + uploader = data['user']['username'] + uploader_id = data['user']['id'] + + stream_params = json.loads(data['stream_params']) + + timestamp = float_or_none(stream_params['creationDate'], 1000) + duration = float_or_none(stream_params['length'], 1000) + + renditions = stream_params.get('renditions') or [] + video = stream_params.get('FLVFullLength') or stream_params.get('videoFullLength') + if video: + renditions.append(video) + + formats = [{ + 'url': fmt['url'], + 'width': fmt['frameWidth'], + 'height': fmt['frameHeight'], + 'vbr': float_or_none(fmt['encodingRate'], 1000), + 'filesize': fmt['size'], + 'vcodec': fmt['videoCodec'], + 'container': fmt['videoContainer'], + } for fmt in renditions if fmt['url']] + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'timestamp': timestamp, + 'duration': duration, + 'uploader': uploader, + 'uploader_id': uploader_id, + 'view_count': view_count, + 'formats': formats, + } diff --git a/youtube_dl/extractor/bambuser.py b/youtube_dl/extractor/bambuser.py index 1ca0b7c..98e1443 100644 --- a/youtube_dl/extractor/bambuser.py +++ b/youtube_dl/extractor/bambuser.py @@ -5,7 +5,7 @@ import json import itertools from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_request, ) diff --git a/youtube_dl/extractor/bandcamp.py b/youtube_dl/extractor/bandcamp.py index acddbc8..aea0263 100644 --- a/youtube_dl/extractor/bandcamp.py +++ b/youtube_dl/extractor/bandcamp.py @@ -4,9 +4,11 @@ import json import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_str, compat_urlparse, +) +from ..utils import ( ExtractorError, ) @@ -104,7 +106,7 @@ class BandcampIE(InfoExtractor): class BandcampAlbumIE(InfoExtractor): IE_NAME = 'Bandcamp:album' - _VALID_URL = r'https?://(?:(?P[^.]+)\.)?bandcamp\.com(?:/album/(?P[^?#]+))' + _VALID_URL = r'https?://(?:(?P<subdomain>[^.]+)\.)?bandcamp\.com(?:/album/(?P<title>[^?#]+)|/?(?:$|[?#]))' _TESTS = [{ 'url': 'http://blazo.bandcamp.com/album/jazz-format-mixtape-vol-1', @@ -139,6 +141,12 @@ class BandcampAlbumIE(InfoExtractor): 'title': 'Hierophany of the Open Grave', }, 'playlist_mincount': 9, + }, { + 'url': 'http://dotscale.bandcamp.com', + 'info_dict': { + 'title': 'Loom', + }, + 'playlist_mincount': 7, }] def _real_extract(self, url): @@ -153,7 +161,8 @@ class BandcampAlbumIE(InfoExtractor): entries = [ self.url_result(compat_urlparse.urljoin(url, t_path), ie=BandcampIE.ie_key()) for t_path in tracks_paths] - title = self._search_regex(r'album_title : "(.*?)"', webpage, 'title') + title = self._search_regex( + r'album_title\s*:\s*"(.*?)"', webpage, 'title', fatal=False) return { '_type': 'playlist', 'id': playlist_id, diff --git a/youtube_dl/extractor/bbccouk.py b/youtube_dl/extractor/bbccouk.py index beb6cfc..1cf48fe 100644 --- a/youtube_dl/extractor/bbccouk.py +++ b/youtube_dl/extractor/bbccouk.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import re import xml.etree.ElementTree from .subtitles import SubtitlesInfoExtractor @@ -11,7 +10,7 @@ from ..compat import compat_HTTPError class BBCCoUkIE(SubtitlesInfoExtractor): IE_NAME = 'bbc.co.uk' IE_DESC = 'BBC iPlayer' - _VALID_URL = r'https?://(?:www\.)?bbc\.co\.uk/(?:programmes|iplayer/episode)/(?P<id>[\da-z]{8})' + _VALID_URL = r'https?://(?:www\.)?bbc\.co\.uk/(?:(?:(?:programmes|iplayer/(?:episode|playlist))/)|music/clips[/#])(?P<id>[\da-z]{8})' _TESTS = [ { @@ -19,8 +18,8 @@ class BBCCoUkIE(SubtitlesInfoExtractor): 'info_dict': { 'id': 'b039d07m', 'ext': 'flv', - 'title': 'Kaleidoscope: Leonard Cohen', - 'description': 'md5:db4755d7a665ae72343779f7dacb402c', + 'title': 'Kaleidoscope, Leonard Cohen', + 'description': 'The Canadian poet and songwriter reflects on his musical career.', 'duration': 1740, }, 'params': { @@ -72,7 +71,54 @@ class BBCCoUkIE(SubtitlesInfoExtractor): 'skip_download': True, }, 'skip': 'Currently BBC iPlayer TV programmes are available to play in the UK only', - }, + }, { + 'url': 'http://www.bbc.co.uk/programmes/b04v20dw', + 'info_dict': { + 'id': 'b04v209v', + 'ext': 'flv', + 'title': 'Pete Tong, The Essential New Tune Special', + 'description': "Pete has a very special mix - all of 2014's Essential New Tunes!", + 'duration': 10800, + }, + 'params': { + # rtmp download + 'skip_download': True, + } + }, { + 'url': 'http://www.bbc.co.uk/music/clips/p02frcc3', + 'note': 'Audio', + 'info_dict': { + 'id': 'p02frcch', + 'ext': 'flv', + 'title': 'Pete Tong, Past, Present and Future Special, Madeon - After Hours mix', + 'description': 'French house superstar Madeon takes us out of the club and onto the after party.', + 'duration': 3507, + }, + 'params': { + # rtmp download + 'skip_download': True, + } + }, { + 'url': 'http://www.bbc.co.uk/music/clips/p025c0zz', + 'note': 'Video', + 'info_dict': { + 'id': 'p025c103', + 'ext': 'flv', + 'title': 'Reading and Leeds Festival, 2014, Rae Morris - Closer (Live on BBC Three)', + 'description': 'Rae Morris performs Closer for BBC Three at Reading 2014', + 'duration': 226, + }, + 'params': { + # rtmp download + 'skip_download': True, + } + }, { + 'url': 'http://www.bbc.co.uk/iplayer/playlist/p01dvks4', + 'only_matching': True, + }, { + 'url': 'http://www.bbc.co.uk/music/clips#p02frcc3', + 'only_matching': True, + } ] def _extract_asx_playlist(self, connection, programme_id): @@ -204,13 +250,66 @@ class BBCCoUkIE(SubtitlesInfoExtractor): return formats, subtitles + def _download_playlist(self, playlist_id): + try: + playlist = self._download_json( + 'http://www.bbc.co.uk/programmes/%s/playlist.json' % playlist_id, + playlist_id, 'Downloading playlist JSON') + + version = playlist.get('defaultAvailableVersion') + if version: + smp_config = version['smpConfig'] + title = smp_config['title'] + description = smp_config['summary'] + for item in smp_config['items']: + kind = item['kind'] + if kind != 'programme' and kind != 'radioProgramme': + continue + programme_id = item.get('vpid') + duration = int(item.get('duration')) + formats, subtitles = self._download_media_selector(programme_id) + return programme_id, title, description, duration, formats, subtitles + except ExtractorError as ee: + if not isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 404: + raise + + # fallback to legacy playlist + playlist = self._download_xml( + 'http://www.bbc.co.uk/iplayer/playlist/%s' % playlist_id, + playlist_id, 'Downloading legacy playlist XML') + + no_items = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}noItems') + if no_items is not None: + reason = no_items.get('reason') + if reason == 'preAvailability': + msg = 'Episode %s is not yet available' % playlist_id + elif reason == 'postAvailability': + msg = 'Episode %s is no longer available' % playlist_id + elif reason == 'noMedia': + msg = 'Episode %s is not currently available' % playlist_id + else: + msg = 'Episode %s is not available: %s' % (playlist_id, reason) + raise ExtractorError(msg, expected=True) + + for item in self._extract_items(playlist): + kind = item.get('kind') + if kind != 'programme' and kind != 'radioProgramme': + continue + title = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}title').text + description = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}summary').text + programme_id = item.get('identifier') + duration = int(item.get('duration')) + formats, subtitles = self._download_media_selector(programme_id) + + return programme_id, title, description, duration, formats, subtitles + def _real_extract(self, url): group_id = self._match_id(url) webpage = self._download_webpage(url, group_id, 'Downloading video page') programme_id = self._search_regex( - r'"vpid"\s*:\s*"([\da-z]{8})"', webpage, 'vpid', fatal=False) + r'"vpid"\s*:\s*"([\da-z]{8})"', webpage, 'vpid', fatal=False, default=None) if programme_id: player = self._download_json( 'http://www.bbc.co.uk/iplayer/episode/%s.json' % group_id, @@ -220,32 +319,7 @@ class BBCCoUkIE(SubtitlesInfoExtractor): duration = player['duration'] formats, subtitles = self._download_media_selector(programme_id) else: - playlist = self._download_xml( - 'http://www.bbc.co.uk/iplayer/playlist/%s' % group_id, - group_id, 'Downloading playlist XML') - - no_items = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}noItems') - if no_items is not None: - reason = no_items.get('reason') - if reason == 'preAvailability': - msg = 'Episode %s is not yet available' % group_id - elif reason == 'postAvailability': - msg = 'Episode %s is no longer available' % group_id - elif reason == 'noMedia': - msg = 'Episode %s is not currently available' % group_id - else: - msg = 'Episode %s is not available: %s' % (group_id, reason) - raise ExtractorError(msg, expected=True) - - for item in self._extract_items(playlist): - kind = item.get('kind') - if kind != 'programme' and kind != 'radioProgramme': - continue - title = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}title').text - description = playlist.find('./{http://bbc.co.uk/2008/emp/playlist}summary').text - programme_id = item.get('identifier') - duration = int(item.get('duration')) - formats, subtitles = self._download_media_selector(programme_id) + programme_id, title, description, duration, formats, subtitles = self._download_playlist(group_id) if self._downloader.params.get('listsubtitles', False): self._list_available_subtitles(programme_id, subtitles) diff --git a/youtube_dl/extractor/behindkink.py b/youtube_dl/extractor/behindkink.py index 31fdc0d..1bdc258 100644 --- a/youtube_dl/extractor/behindkink.py +++ b/youtube_dl/extractor/behindkink.py @@ -10,15 +10,15 @@ from ..utils import url_basename class BehindKinkIE(InfoExtractor): _VALID_URL = r'http://(?:www\.)?behindkink\.com/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/(?P<id>[^/#?_]+)' _TEST = { - 'url': 'http://www.behindkink.com/2014/08/14/ab1576-performers-voice-finally-heard-the-bill-is-killed/', - 'md5': '41ad01222b8442089a55528fec43ec01', + 'url': 'http://www.behindkink.com/2014/12/05/what-are-you-passionate-about-marley-blaze/', + 'md5': '507b57d8fdcd75a41a9a7bdb7989c762', 'info_dict': { - 'id': '36370', + 'id': '37127', 'ext': 'mp4', - 'title': 'AB1576 - PERFORMERS VOICE FINALLY HEARD - THE BILL IS KILLED!', - 'description': 'The adult industry voice was finally heard as Assembly Bill 1576 remained\xa0 in suspense today at the Senate Appropriations Hearing. AB1576 was, among other industry damaging issues, a condom mandate...', - 'upload_date': '20140814', - 'thumbnail': 'http://www.behindkink.com/wp-content/uploads/2014/08/36370_AB1576_Win.jpg', + 'title': 'What are you passionate about – Marley Blaze', + 'description': 'md5:aee8e9611b4ff70186f752975d9b94b4', + 'upload_date': '20141205', + 'thumbnail': 'http://www.behindkink.com/wp-content/uploads/2014/12/blaze-1.jpg', 'age_limit': 18, } } @@ -26,26 +26,19 @@ class BehindKinkIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) display_id = mobj.group('id') - year = mobj.group('year') - month = mobj.group('month') - day = mobj.group('day') - upload_date = year + month + day webpage = self._download_webpage(url, display_id) video_url = self._search_regex( - r"'file':\s*'([^']+)'", - webpage, 'URL base') - - video_id = url_basename(video_url) - video_id = video_id.split('_')[0] + r'<source src="([^"]+)"', webpage, 'video URL') + video_id = url_basename(video_url).split('_')[0] + upload_date = mobj.group('year') + mobj.group('month') + mobj.group('day') return { 'id': video_id, + 'display_id': display_id, 'url': video_url, - 'ext': 'mp4', 'title': self._og_search_title(webpage), - 'display_id': display_id, 'thumbnail': self._og_search_thumbnail(webpage), 'description': self._og_search_description(webpage), 'upload_date': upload_date, diff --git a/youtube_dl/extractor/bet.py b/youtube_dl/extractor/bet.py new file mode 100644 index 0000000..d2abd4d --- /dev/null +++ b/youtube_dl/extractor/bet.py @@ -0,0 +1,107 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..compat import compat_urllib_parse +from ..utils import ( + xpath_text, + xpath_with_ns, + int_or_none, + parse_iso8601, +) + + +class BetIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?bet\.com/(?:[^/]+/)+(?P<id>.+?)\.html' + _TESTS = [ + { + 'url': 'http://www.bet.com/news/politics/2014/12/08/in-bet-exclusive-obama-talks-race-and-racism.html', + 'info_dict': { + 'id': '740ab250-bb94-4a8a-8787-fe0de7c74471', + 'display_id': 'in-bet-exclusive-obama-talks-race-and-racism', + 'ext': 'flv', + 'title': 'BET News Presents: A Conversation With President Obama', + 'description': 'md5:5a88d8ae912c1b33e090290af7ec33c6', + 'duration': 1534, + 'timestamp': 1418075340, + 'upload_date': '20141208', + 'uploader': 'admin', + 'thumbnail': 're:(?i)^https?://.*\.jpg$', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + }, + { + 'url': 'http://www.bet.com/video/news/national/2014/justice-for-ferguson-a-community-reacts.html', + 'info_dict': { + 'id': 'bcd1b1df-673a-42cf-8d01-b282db608f2d', + 'display_id': 'justice-for-ferguson-a-community-reacts', + 'ext': 'flv', + 'title': 'Justice for Ferguson: A Community Reacts', + 'description': 'A BET News special.', + 'duration': 1696, + 'timestamp': 1416942360, + 'upload_date': '20141125', + 'uploader': 'admin', + 'thumbnail': 're:(?i)^https?://.*\.jpg$', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + } + ] + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + + media_url = compat_urllib_parse.unquote(self._search_regex( + [r'mediaURL\s*:\s*"([^"]+)"', r"var\s+mrssMediaUrl\s*=\s*'([^']+)'"], + webpage, 'media URL')) + + mrss = self._download_xml(media_url, display_id) + + item = mrss.find('./channel/item') + + NS_MAP = { + 'dc': 'http://purl.org/dc/elements/1.1/', + 'media': 'http://search.yahoo.com/mrss/', + 'ka': 'http://kickapps.com/karss', + } + + title = xpath_text(item, './title', 'title') + description = xpath_text( + item, './description', 'description', fatal=False) + + video_id = xpath_text(item, './guid', 'video id', fatal=False) + + timestamp = parse_iso8601(xpath_text( + item, xpath_with_ns('./dc:date', NS_MAP), + 'upload date', fatal=False)) + uploader = xpath_text( + item, xpath_with_ns('./dc:creator', NS_MAP), + 'uploader', fatal=False) + + media_content = item.find( + xpath_with_ns('./media:content', NS_MAP)) + duration = int_or_none(media_content.get('duration')) + smil_url = media_content.get('url') + + thumbnail = media_content.find( + xpath_with_ns('./media:thumbnail', NS_MAP)).get('url') + + formats = self._extract_smil_formats(smil_url, display_id) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'timestamp': timestamp, + 'uploader': uploader, + 'duration': duration, + 'formats': formats, + } diff --git a/youtube_dl/extractor/bilibili.py b/youtube_dl/extractor/bilibili.py index 0d5889f..75d7448 100644 --- a/youtube_dl/extractor/bilibili.py +++ b/youtube_dl/extractor/bilibili.py @@ -5,8 +5,6 @@ import re from .common import InfoExtractor from ..utils import ( - compat_parse_qs, - ExtractorError, int_or_none, unified_strdate, ) @@ -29,10 +27,9 @@ class BiliBiliIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) + video_code = self._search_regex( r'(?s)<div itemprop="video".*?>(.*?)</div>', webpage, 'video code') @@ -55,45 +52,38 @@ class BiliBiliIE(InfoExtractor): thumbnail = self._html_search_meta( 'thumbnailUrl', video_code, 'thumbnail', fatal=False) - player_params = compat_parse_qs(self._html_search_regex( - r'<iframe .*?class="player" src="https://secure\.bilibili\.(?:tv|com)/secure,([^"]+)"', - webpage, 'player params')) + cid = self._search_regex(r'cid=(\d+)', webpage, 'cid') - if 'cid' in player_params: - cid = player_params['cid'][0] + lq_doc = self._download_xml( + 'http://interface.bilibili.com/v_cdn_play?appkey=1&cid=%s' % cid, + video_id, + note='Downloading LQ video info' + ) + lq_durl = lq_doc.find('./durl') + formats = [{ + 'format_id': 'lq', + 'quality': 1, + 'url': lq_durl.find('./url').text, + 'filesize': int_or_none( + lq_durl.find('./size'), get_attr='text'), + }] - lq_doc = self._download_xml( - 'http://interface.bilibili.cn/v_cdn_play?cid=%s' % cid, - video_id, - note='Downloading LQ video info' - ) - lq_durl = lq_doc.find('.//durl') - formats = [{ - 'format_id': 'lq', - 'quality': 1, - 'url': lq_durl.find('./url').text, + hq_doc = self._download_xml( + 'http://interface.bilibili.com/playurl?appkey=1&cid=%s' % cid, + video_id, + note='Downloading HQ video info', + fatal=False, + ) + if hq_doc is not False: + hq_durl = hq_doc.find('./durl') + formats.append({ + 'format_id': 'hq', + 'quality': 2, + 'ext': 'flv', + 'url': hq_durl.find('./url').text, 'filesize': int_or_none( - lq_durl.find('./size'), get_attr='text'), - }] - - hq_doc = self._download_xml( - 'http://interface.bilibili.cn/playurl?cid=%s' % cid, - video_id, - note='Downloading HQ video info', - fatal=False, - ) - if hq_doc is not False: - hq_durl = hq_doc.find('.//durl') - formats.append({ - 'format_id': 'hq', - 'quality': 2, - 'ext': 'flv', - 'url': hq_durl.find('./url').text, - 'filesize': int_or_none( - hq_durl.find('./size'), get_attr='text'), - }) - else: - raise ExtractorError('Unsupported player parameters: %r' % (player_params,)) + hq_durl.find('./size'), get_attr='text'), + }) self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/bliptv.py b/youtube_dl/extractor/bliptv.py index da47f27..14b8141 100644 --- a/youtube_dl/extractor/bliptv.py +++ b/youtube_dl/extractor/bliptv.py @@ -4,13 +4,17 @@ import re from .common import InfoExtractor from .subtitles import SubtitlesInfoExtractor -from ..utils import ( + +from ..compat import ( + compat_str, compat_urllib_request, - unescapeHTML, - parse_iso8601, compat_urlparse, +) +from ..utils import ( clean_html, - compat_str, + int_or_none, + parse_iso8601, + unescapeHTML, ) @@ -78,7 +82,25 @@ class BlipTVIE(SubtitlesInfoExtractor): 'uploader': 'NostalgiaCritic', 'uploader_id': '246467', } - } + }, + { + # https://github.com/rg3/youtube-dl/pull/4404 + 'note': 'Audio only', + 'url': 'http://blip.tv/hilarios-productions/weekly-manga-recap-kingdom-7119982', + 'md5': '76c0a56f24e769ceaab21fbb6416a351', + 'info_dict': { + 'id': '7103299', + 'ext': 'flv', + 'title': 'Weekly Manga Recap: Kingdom', + 'description': 'And then Shin breaks the enemy line, and he's all like HWAH! And then he slices a guy and it's all like FWASHING! And... it's really hard to describe the best parts of this series without breaking down into sound effects, okay?', + 'timestamp': 1417660321, + 'upload_date': '20141204', + 'uploader': 'The Rollo T', + 'uploader_id': '407429', + 'duration': 7251, + 'vcodec': 'none', + } + }, ] def _real_extract(self, url): @@ -145,11 +167,11 @@ class BlipTVIE(SubtitlesInfoExtractor): 'url': real_url, 'format_id': role, 'format_note': media_type, - 'vcodec': media_content.get(blip('vcodec')), + 'vcodec': media_content.get(blip('vcodec')) or 'none', 'acodec': media_content.get(blip('acodec')), 'filesize': media_content.get('filesize'), - 'width': int(media_content.get('width')), - 'height': int(media_content.get('height')), + 'width': int_or_none(media_content.get('width')), + 'height': int_or_none(media_content.get('height')), }) self._sort_formats(formats) diff --git a/youtube_dl/extractor/breakcom.py b/youtube_dl/extractor/breakcom.py index 2c0e5ee..4bcc897 100644 --- a/youtube_dl/extractor/breakcom.py +++ b/youtube_dl/extractor/breakcom.py @@ -14,7 +14,6 @@ class BreakIE(InfoExtractor): _VALID_URL = r'http://(?:www\.)?break\.com/video/(?:[^/]+/)*.+-(?P<id>\d+)' _TESTS = [{ 'url': 'http://www.break.com/video/when-girls-act-like-guys-2468056', - 'md5': '33aa4ff477ecd124d18d7b5d23b87ce5', 'info_dict': { 'id': '2468056', 'ext': 'mp4', diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index 2db7f9f..003152c 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -6,25 +6,26 @@ import json import xml.etree.ElementTree from .common import InfoExtractor -from ..utils import ( - compat_urllib_parse, - find_xpath_attr, - fix_xml_ampersands, - compat_urlparse, - compat_str, - compat_urllib_request, +from ..compat import ( compat_parse_qs, + compat_str, + compat_urllib_parse, compat_urllib_parse_urlparse, - + compat_urllib_request, + compat_urlparse, +) +from ..utils import ( determine_ext, ExtractorError, - unsmuggle_url, + find_xpath_attr, + fix_xml_ampersands, unescapeHTML, + unsmuggle_url, ) class BrightcoveIE(InfoExtractor): - _VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*?\?(?P<query>.*)' + _VALID_URL = r'(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)' _FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s' _TESTS = [ @@ -265,6 +266,7 @@ class BrightcoveIE(InfoExtractor): url = rend['defaultURL'] if not url: continue + ext = None if rend['remote']: url_comp = compat_urllib_parse_urlparse(url) if url_comp.path.endswith('.m3u8'): @@ -276,7 +278,7 @@ class BrightcoveIE(InfoExtractor): # akamaihd.net, but they don't use f4m manifests url = url.replace('control/', '') + '?&v=3.3.0&fp=13&r=FEEFJ&g=RTSJIMBMPFPB' ext = 'flv' - else: + if ext is None: ext = determine_ext(url) size = rend.get('size') formats.append({ diff --git a/youtube_dl/extractor/buzzfeed.py b/youtube_dl/extractor/buzzfeed.py index a40a1bb..a5d2af1 100644 --- a/youtube_dl/extractor/buzzfeed.py +++ b/youtube_dl/extractor/buzzfeed.py @@ -33,7 +33,7 @@ class BuzzFeedIE(InfoExtractor): 'skip_download': True, # Got enough YouTube download tests }, 'info_dict': { - 'description': 'Munchkin the Teddy Bear is back !', + 'description': 're:Munchkin the Teddy Bear is back ?!', 'title': 'You Need To Stop What You\'re Doing And Watching This Dog Walk On A Treadmill', }, 'playlist': [{ @@ -42,9 +42,9 @@ class BuzzFeedIE(InfoExtractor): 'ext': 'mp4', 'upload_date': '20141124', 'uploader_id': 'CindysMunchkin', - 'description': '© 2014 Munchkin the Shih Tzu\nAll rights reserved\nFacebook: http://facebook.com/MunchkintheShihTzu', + 'description': 're:© 2014 Munchkin the Shih Tzu', 'uploader': 'Munchkin the Shih Tzu', - 'title': 'Munchkin the Teddy Bear gets her exercise', + 'title': 're:Munchkin the Teddy Bear gets her exercise', }, }] }] diff --git a/youtube_dl/extractor/canalplus.py b/youtube_dl/extractor/canalplus.py index 9873728..11d18d7 100644 --- a/youtube_dl/extractor/canalplus.py +++ b/youtube_dl/extractor/canalplus.py @@ -5,6 +5,8 @@ import re from .common import InfoExtractor from ..utils import ( + ExtractorError, + HEADRequest, unified_strdate, url_basename, qualities, @@ -76,6 +78,16 @@ class CanalplusIE(InfoExtractor): preference = qualities(['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD', 'HLS', 'HDS']) + fmt_url = next(iter(media.find('VIDEOS'))).text + if '/geo' in fmt_url.lower(): + response = self._request_webpage( + HEADRequest(fmt_url), video_id, + 'Checking if the video is georestricted') + if '/blocage' in response.geturl(): + raise ExtractorError( + 'The video is not available in your country', + expected=True) + formats = [] for fmt in media.find('VIDEOS'): format_url = fmt.text diff --git a/youtube_dl/extractor/ceskatelevize.py b/youtube_dl/extractor/ceskatelevize.py index 97feb67..f70e090 100644 --- a/youtube_dl/extractor/ceskatelevize.py +++ b/youtube_dl/extractor/ceskatelevize.py @@ -3,55 +3,50 @@ from __future__ import unicode_literals import re -from .common import InfoExtractor -from ..utils import ( +from .subtitles import SubtitlesInfoExtractor +from ..compat import ( compat_urllib_request, compat_urllib_parse, compat_urllib_parse_urlparse, +) +from ..utils import ( ExtractorError, + float_or_none, ) -class CeskaTelevizeIE(InfoExtractor): +class CeskaTelevizeIE(SubtitlesInfoExtractor): _VALID_URL = r'https?://www\.ceskatelevize\.cz/(porady|ivysilani)/(.+/)?(?P<id>[^?#]+)' _TESTS = [ { - 'url': 'http://www.ceskatelevize.cz/ivysilani/10532695142-prvni-republika/213512120230004-spanelska-chripka', - 'info_dict': { - 'id': '213512120230004', - 'ext': 'flv', - 'title': 'První republika: Španělská chřipka', - 'duration': 3107.4, - }, - 'params': { - 'skip_download': True, # requires rtmpdump - }, - 'skip': 'Works only from Czech Republic.', - }, - { - 'url': 'http://www.ceskatelevize.cz/ivysilani/1030584952-tsatsiki-maminka-a-policajt', + 'url': 'http://www.ceskatelevize.cz/ivysilani/ivysilani/10441294653-hyde-park-civilizace/214411058091220', 'info_dict': { - 'id': '20138143440', - 'ext': 'flv', - 'title': 'Tsatsiki, maminka a policajt', - 'duration': 6754.1, + 'id': '214411058091220', + 'ext': 'mp4', + 'title': 'Hyde Park Civilizace', + 'description': 'Věda a současná civilizace. Interaktivní pořad - prostor pro vaše otázky a komentáře', + 'thumbnail': 're:^https?://.*\.jpg', + 'duration': 3350, }, 'params': { - 'skip_download': True, # requires rtmpdump + # m3u8 download + 'skip_download': True, }, - 'skip': 'Works only from Czech Republic.', }, { 'url': 'http://www.ceskatelevize.cz/ivysilani/10532695142-prvni-republika/bonus/14716-zpevacka-z-duparny-bobina', 'info_dict': { 'id': '14716', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'První republika: Zpěvačka z Dupárny Bobina', - 'duration': 90, + 'description': 'Sága mapující atmosféru první republiky od r. 1918 do r. 1945.', + 'thumbnail': 're:^https?://.*\.jpg', + 'duration': 88.4, }, 'params': { - 'skip_download': True, # requires rtmpdump + # m3u8 download + 'skip_download': True, }, }, ] @@ -78,8 +73,9 @@ class CeskaTelevizeIE(InfoExtractor): 'requestSource': 'iVysilani', } - req = compat_urllib_request.Request('http://www.ceskatelevize.cz/ivysilani/ajax/get-playlist-url', - data=compat_urllib_parse.urlencode(data)) + req = compat_urllib_request.Request( + 'http://www.ceskatelevize.cz/ivysilani/ajax/get-client-playlist', + data=compat_urllib_parse.urlencode(data)) req.add_header('Content-type', 'application/x-www-form-urlencoded') req.add_header('x-addr', '127.0.0.1') @@ -88,39 +84,72 @@ class CeskaTelevizeIE(InfoExtractor): playlistpage = self._download_json(req, video_id) - req = compat_urllib_request.Request(compat_urllib_parse.unquote(playlistpage['url'])) + playlist_url = playlistpage['url'] + if playlist_url == 'error_region': + raise ExtractorError(NOT_AVAILABLE_STRING, expected=True) + + req = compat_urllib_request.Request(compat_urllib_parse.unquote(playlist_url)) req.add_header('Referer', url) - playlist = self._download_xml(req, video_id) + playlist = self._download_json(req, video_id) + item = playlist['playlist'][0] formats = [] - for i in playlist.find('smilRoot/body'): - if 'AD' not in i.attrib['id']: - base_url = i.attrib['base'] - parsedurl = compat_urllib_parse_urlparse(base_url) - duration = i.attrib['duration'] - - for video in i.findall('video'): - if video.attrib['label'] != 'AD': - format_id = video.attrib['label'] - play_path = video.attrib['src'] - vbr = int(video.attrib['system-bitrate']) - - formats.append({ - 'format_id': format_id, - 'url': base_url, - 'vbr': vbr, - 'play_path': play_path, - 'app': parsedurl.path[1:] + '?' + parsedurl.query, - 'rtmp_live': True, - 'ext': 'flv', - }) - + for format_id, stream_url in item['streamUrls'].items(): + formats.extend(self._extract_m3u8_formats(stream_url, video_id, 'mp4')) self._sort_formats(formats) + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + duration = float_or_none(item.get('duration')) + thumbnail = item.get('previewImageUrl') + + subtitles = {} + subs = item.get('subtitles') + if subs: + subtitles['cs'] = subs[0]['url'] + + if self._downloader.params.get('listsubtitles', False): + self._list_available_subtitles(video_id, subtitles) + return + + subtitles = self._fix_subtitles(self.extract_subtitles(video_id, subtitles)) + return { 'id': episode_id, - 'title': self._html_search_regex(r'<title>(.+?) — iVysílání — Česká televize', webpage, 'title'), - 'duration': float(duration), + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, 'formats': formats, + 'subtitles': subtitles, } + + @staticmethod + def _fix_subtitles(subtitles): + """ Convert millisecond-based subtitles to SRT """ + if subtitles is None: + return subtitles # subtitles not requested + + def _msectotimecode(msec): + """ Helper utility to convert milliseconds to timecode """ + components = [] + for divider in [1000, 60, 60, 100]: + components.append(msec % divider) + msec //= divider + return "{3:02}:{2:02}:{1:02},{0:03}".format(*components) + + def _fix_subtitle(subtitle): + for line in subtitle.splitlines(): + m = re.match(r"^\s*([0-9]+);\s*([0-9]+)\s+([0-9]+)\s*$", line) + if m: + yield m.group(1) + start, stop = (_msectotimecode(int(t)) for t in m.groups()[1:]) + yield "{0} --> {1}".format(start, stop) + else: + yield line + + fixed_subtitles = {} + for k, v in subtitles.items(): + fixed_subtitles[k] = "\r\n".join(_fix_subtitle(v)) + return fixed_subtitles diff --git a/youtube_dl/extractor/channel9.py b/youtube_dl/extractor/channel9.py index 2a05813..3dfc24f 100644 --- a/youtube_dl/extractor/channel9.py +++ b/youtube_dl/extractor/channel9.py @@ -236,16 +236,17 @@ class Channel9IE(InfoExtractor): if contents is None: return contents - session_meta = {'session_code': self._extract_session_code(html), - 'session_day': self._extract_session_day(html), - 'session_room': self._extract_session_room(html), - 'session_speakers': self._extract_session_speakers(html), - } + session_meta = { + 'session_code': self._extract_session_code(html), + 'session_day': self._extract_session_day(html), + 'session_room': self._extract_session_room(html), + 'session_speakers': self._extract_session_speakers(html), + } for content in contents: content.update(session_meta) - return contents + return self.playlist_result(contents) def _extract_list(self, content_path): rss = self._download_xml(self._RSS_URL % content_path, content_path, 'Downloading RSS') diff --git a/youtube_dl/extractor/cinchcast.py b/youtube_dl/extractor/cinchcast.py new file mode 100644 index 0000000..0c9a24b --- /dev/null +++ b/youtube_dl/extractor/cinchcast.py @@ -0,0 +1,52 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + unified_strdate, + xpath_text, +) + + +class CinchcastIE(InfoExtractor): + _VALID_URL = r'https?://player\.cinchcast\.com/.*?assetId=(?P[0-9]+)' + _TEST = { + # Actual test is run in generic, look for undergroundwellness + 'url': 'http://player.cinchcast.com/?platformId=1&assetType=single&assetId=7141703', + 'only_matching': True, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + doc = self._download_xml( + 'http://www.blogtalkradio.com/playerasset/mrss?assetType=single&assetId=%s' % video_id, + video_id) + + item = doc.find('.//item') + title = xpath_text(item, './title', fatal=True) + date_str = xpath_text( + item, './{http://developer.longtailvideo.com/trac/}date') + upload_date = unified_strdate(date_str, day_first=False) + # duration is present but wrong + formats = [] + formats.append({ + 'format_id': 'main', + 'url': item.find( + './{http://search.yahoo.com/mrss/}content').attrib['url'], + }) + backup_url = xpath_text( + item, './{http://developer.longtailvideo.com/trac/}backupContent') + if backup_url: + formats.append({ + 'preference': 2, # seems to be more reliable + 'format_id': 'backup', + 'url': backup_url, + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'upload_date': upload_date, + 'formats': formats, + } diff --git a/youtube_dl/extractor/cnet.py b/youtube_dl/extractor/cnet.py index 710d500..3145b30 100644 --- a/youtube_dl/extractor/cnet.py +++ b/youtube_dl/extractor/cnet.py @@ -2,12 +2,10 @@ from __future__ import unicode_literals import json -import re from .common import InfoExtractor from ..utils import ( ExtractorError, - int_or_none, ) @@ -15,23 +13,24 @@ class CNETIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?cnet\.com/videos/(?P[^/]+)/' _TEST = { 'url': 'http://www.cnet.com/videos/hands-on-with-microsofts-windows-8-1-update/', - 'md5': '041233212a0d06b179c87cbcca1577b8', 'info_dict': { 'id': '56f4ea68-bd21-4852-b08c-4de5b8354c60', - 'ext': 'mp4', + 'ext': 'flv', 'title': 'Hands-on with Microsoft Windows 8.1 Update', 'description': 'The new update to the Windows 8 OS brings improved performance for mouse and keyboard users.', 'thumbnail': 're:^http://.*/flmswindows8.jpg$', - 'uploader_id': 'sarah.mitroff@cbsinteractive.com', + 'uploader_id': '6085384d-619e-11e3-b231-14feb5ca9861', 'uploader': 'Sarah Mitroff', + }, + 'params': { + 'skip_download': 'requires rtmpdump', } } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - display_id = mobj.group('id') - + display_id = self._match_id(url) webpage = self._download_webpage(url, display_id) + data_json = self._html_search_regex( r"
    .+?/(?P[^/]+?)(?:\.cnn(-ap)?|(?=&)))''' + _VALID_URL = r'''(?x)https?://(?:(?:edition|www)\.)?cnn\.com/video/(?:data/.+?|\?)/ + (?P<path>.+?/(?P<title>[^/]+?)(?:\.(?:cnn|hln)(?:-ap)?|(?=&)))''' _TESTS = [{ 'url': 'http://edition.cnn.com/video/?/video/sports/2013/06/09/nadal-1-on-1.cnn', 'md5': '3e6121ea48df7e2259fe73a0628605c4', 'info_dict': { - 'id': 'sports_2013_06_09_nadal-1-on-1.cnn', + 'id': 'sports/2013/06/09/nadal-1-on-1.cnn', 'ext': 'mp4', 'title': 'Nadal wins 8th French Open title', 'description': 'World Sport\'s Amanda Davies chats with 2013 French Open champion Rafael Nadal.', @@ -35,6 +35,16 @@ class CNNIE(InfoExtractor): "description": "A Georgia Tech student welcomes the incoming freshmen with an epic speech backed by music from \"2001: A Space Odyssey.\"", "upload_date": "20130821", } + }, { + 'url': 'http://www.cnn.com/video/data/2.0/video/living/2014/12/22/growing-america-nashville-salemtown-board-episode-1.hln.html', + 'md5': 'f14d02ebd264df951feb2400e2c25a1b', + 'info_dict': { + 'id': 'living/2014/12/22/growing-america-nashville-salemtown-board-episode-1.hln', + 'ext': 'mp4', + 'title': 'Nashville Ep. 1: Hand crafted skateboards', + 'description': 'md5:e7223a503315c9f150acac52e76de086', + 'upload_date': '20141222', + } }] def _real_extract(self, url): @@ -127,3 +137,28 @@ class CNNBlogsIE(InfoExtractor): 'url': cnn_url, 'ie_key': CNNIE.ie_key(), } + + +class CNNArticleIE(InfoExtractor): + _VALID_URL = r'https?://(?:(?:edition|www)\.)?cnn\.com/(?!video/)' + _TEST = { + 'url': 'http://www.cnn.com/2014/12/21/politics/obama-north-koreas-hack-not-war-but-cyber-vandalism/', + 'md5': '275b326f85d80dff7592a9820f5dc887', + 'info_dict': { + 'id': 'bestoftv/2014/12/21/sotu-crowley-president-obama-north-korea-not-going-to-be-intimidated.cnn', + 'ext': 'mp4', + 'title': 'Obama: We\'re not going to be intimidated', + 'description': 'md5:e735586f3dc936075fa654a4d91b21f9', + 'upload_date': '20141220', + }, + 'add_ie': ['CNN'], + } + + def _real_extract(self, url): + webpage = self._download_webpage(url, url_basename(url)) + cnn_url = self._html_search_regex(r"video:\s*'([^']+)'", webpage, 'cnn url') + return { + '_type': 'url', + 'url': 'http://cnn.com/video/?/video/' + cnn_url, + 'ie_key': CNNIE.ie_key(), + } diff --git a/youtube_dl/extractor/collegerama.py b/youtube_dl/extractor/collegerama.py new file mode 100644 index 0000000..fedd484 --- /dev/null +++ b/youtube_dl/extractor/collegerama.py @@ -0,0 +1,92 @@ +from __future__ import unicode_literals + +import json + +from .common import InfoExtractor +from ..compat import compat_urllib_request +from ..utils import ( + float_or_none, + int_or_none, +) + + +class CollegeRamaIE(InfoExtractor): + _VALID_URL = r'https?://collegerama\.tudelft\.nl/Mediasite/Play/(?P<id>[\da-f]+)' + _TESTS = [ + { + 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/585a43626e544bdd97aeb71a0ec907a01d', + 'md5': '481fda1c11f67588c0d9d8fbdced4e39', + 'info_dict': { + 'id': '585a43626e544bdd97aeb71a0ec907a01d', + 'ext': 'mp4', + 'title': 'Een nieuwe wereld: waarden, bewustzijn en techniek van de mensheid 2.0.', + 'description': '', + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 7713.088, + 'timestamp': 1413309600, + 'upload_date': '20141014', + }, + }, + { + 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/86a9ea9f53e149079fbdb4202b521ed21d?catalog=fd32fd35-6c99-466c-89d4-cd3c431bc8a4', + 'md5': 'ef1fdded95bdf19b12c5999949419c92', + 'info_dict': { + 'id': '86a9ea9f53e149079fbdb4202b521ed21d', + 'ext': 'wmv', + 'title': '64ste Vakantiecursus: Afvalwater', + 'description': 'md5:7fd774865cc69d972f542b157c328305', + 'duration': 10853, + 'timestamp': 1326446400, + 'upload_date': '20120113', + }, + }, + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + + player_options_request = { + "getPlayerOptionsRequest": { + "ResourceId": video_id, + "QueryString": "", + } + } + + request = compat_urllib_request.Request( + 'http://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions', + json.dumps(player_options_request)) + request.add_header('Content-Type', 'application/json') + + player_options = self._download_json(request, video_id) + + presentation = player_options['d']['Presentation'] + title = presentation['Title'] + description = presentation.get('Description') + thumbnail = None + duration = float_or_none(presentation.get('Duration'), 1000) + timestamp = int_or_none(presentation.get('UnixTime'), 1000) + + formats = [] + for stream in presentation['Streams']: + for video in stream['VideoUrls']: + thumbnail_url = stream.get('ThumbnailUrl') + if thumbnail_url: + thumbnail = 'http://collegerama.tudelft.nl' + thumbnail_url + format_id = video['MediaType'] + if format_id == 'SS': + continue + formats.append({ + 'url': video['Location'], + 'format_id': format_id, + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, + 'timestamp': timestamp, + 'formats': formats, + } diff --git a/youtube_dl/extractor/comcarcoff.py b/youtube_dl/extractor/comcarcoff.py new file mode 100644 index 0000000..9c25b22 --- /dev/null +++ b/youtube_dl/extractor/comcarcoff.py @@ -0,0 +1,57 @@ +# encoding: utf-8 +from __future__ import unicode_literals + +import json + +from .common import InfoExtractor +from ..utils import parse_iso8601 + + +class ComCarCoffIE(InfoExtractor): + _VALID_URL = r'http://(?:www\.)?comediansincarsgettingcoffee\.com/(?P<id>[a-z0-9\-]*)' + _TESTS = [{ + 'url': 'http://comediansincarsgettingcoffee.com/miranda-sings-happy-thanksgiving-miranda/', + 'info_dict': { + 'id': 'miranda-sings-happy-thanksgiving-miranda', + 'ext': 'mp4', + 'upload_date': '20141127', + 'timestamp': 1417107600, + 'title': 'Happy Thanksgiving Miranda', + 'description': 'Jerry Seinfeld and his special guest Miranda Sings cruise around town in search of coffee, complaining and apologizing along the way.', + 'thumbnail': 'http://ccc.crackle.com/images/s5e4_thumb.jpg', + }, + 'params': { + 'skip_download': 'requires ffmpeg', + } + }] + + def _real_extract(self, url): + display_id = self._match_id(url) + if not display_id: + display_id = 'comediansincarsgettingcoffee.com' + webpage = self._download_webpage(url, display_id) + + full_data = json.loads(self._search_regex( + r'<script type="application/json" id="videoData">(?P<json>.+?)</script>', + webpage, 'full data json')) + + video_id = full_data['activeVideo']['video'] + video_data = full_data['videos'][video_id] + thumbnails = [{ + 'url': video_data['images']['thumb'], + }, { + 'url': video_data['images']['poster'], + }] + formats = self._extract_m3u8_formats( + video_data['mediaUrl'], video_id, ext='mp4') + + return { + 'id': video_id, + 'display_id': display_id, + 'title': video_data['title'], + 'description': video_data.get('description'), + 'timestamp': parse_iso8601(video_data.get('pubDate')), + 'thumbnails': thumbnails, + 'formats': formats, + 'webpage_url': 'http://comediansincarsgettingcoffee.com/%s' % (video_data.get('urlSlug', video_data.get('slug'))), + } diff --git a/youtube_dl/extractor/comedycentral.py b/youtube_dl/extractor/comedycentral.py index 2e3ef3f..8d27af5 100644 --- a/youtube_dl/extractor/comedycentral.py +++ b/youtube_dl/extractor/comedycentral.py @@ -3,9 +3,11 @@ from __future__ import unicode_literals import re from .mtv import MTVServicesInfoExtractor -from ..utils import ( +from ..compat import ( compat_str, compat_urllib_parse, +) +from ..utils import ( ExtractorError, float_or_none, unified_strdate, @@ -48,7 +50,7 @@ class ComedyCentralShowsIE(MTVServicesInfoExtractor): )| (?P<interview> extended-interviews/(?P<interID>[0-9a-z]+)/(?:playlist_tds_extended_)?(?P<interview_title>.*?)(/.*?)?))) - (?:[?#].*|$)''' + ''' _TESTS = [{ 'url': 'http://thedailyshow.cc.com/watch/thu-december-13-2012/kristen-stewart', 'md5': '4e2f5cb088a83cd8cdb7756132f9739d', @@ -81,6 +83,9 @@ class ComedyCentralShowsIE(MTVServicesInfoExtractor): }, { 'url': 'http://thedailyshow.cc.com/video-playlists/npde3s/the-daily-show-19088-highlights', 'only_matching': True, + }, { + 'url': 'http://thedailyshow.cc.com/video-playlists/t6d9sg/the-daily-show-20038-highlights/be3cwo', + 'only_matching': True, }, { 'url': 'http://thedailyshow.cc.com/special-editions/2l8fdb/special-edition---a-look-back-at-food', 'only_matching': True, diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index e80a2da..03f3f18 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -21,6 +21,7 @@ from ..compat import ( compat_str, ) from ..utils import ( + age_restricted, clean_html, compiled_regex_type, ExtractorError, @@ -40,7 +41,7 @@ class InfoExtractor(object): information about the video (or videos) the URL refers to. This information includes the real video URL, the video title, author and others. The information is stored in a dictionary which is then - passed to the FileDownloader. The FileDownloader processes this + passed to the YoutubeDL. The YoutubeDL processes this information possibly downloading the video to the file system, among other possible outcomes. @@ -92,6 +93,8 @@ class InfoExtractor(object): by this field, regardless of all other values. -1 for default (order by other properties), -2 or smaller for less than default. + < -1000 to hide the format (if there is + another one which is strictly better) * language_preference Is this in the correct requested language? 10 if it's what the URL is about, @@ -111,6 +114,9 @@ class InfoExtractor(object): to add to the request. * http_post_data Additional data to send with a POST request. + * stretched_ratio If given and not 1, indicates that the + video's pixels are not square. + width : height ratio as float. url: Final video URL. ext: Video filename extension. format: The video format, defaults to ext (used for --get-format) @@ -118,6 +124,7 @@ class InfoExtractor(object): The following fields are optional: + alt_title: A secondary title of the video. display_id An alternative identifier for the video, not necessarily unique, but available before title. Typically, id is something like "4234987", title "Dancing naked mole rats", @@ -129,7 +136,7 @@ class InfoExtractor(object): * "resolution" (optional, string "{width}x{height"}, deprecated) thumbnail: Full URL to a video thumbnail image. - description: One-line video description. + description: Full video description. uploader: Full name of the video uploader. timestamp: UNIX timestamp of the moment the video became available. upload_date: Video upload date (YYYYMMDD). @@ -143,6 +150,17 @@ class InfoExtractor(object): like_count: Number of positive ratings of the video dislike_count: Number of negative ratings of the video comment_count: Number of comments on the video + comments: A list of comments, each with one or more of the following + properties (all but one of text or html optional): + * "author" - human-readable name of the comment author + * "author_id" - user ID of the comment author + * "id" - Comment ID + * "html" - Comment as HTML + * "text" - Plain text of the comment + * "timestamp" - UNIX timestamp of comment + * "parent" - ID of the comment this one is replying to. + Set to "root" to indicate that this is a + comment to the original video. age_limit: Age restriction for the video, as an integer (years) webpage_url: The url to the video webpage, if given to youtube-dl it should allow to get the same result again. (It will be set @@ -158,8 +176,8 @@ class InfoExtractor(object): _type "playlist" indicates multiple videos. - There must be a key "entries", which is a list or a PagedList object, each - element of which is a valid dictionary under this specfication. + There must be a key "entries", which is a list, an iterable, or a PagedList + object, each element of which is a valid dictionary by this specification. Additionally, playlists can have "title" and "id" attributes with the same semantics as videos (see above). @@ -174,9 +192,10 @@ class InfoExtractor(object): _type "url" indicates that the video must be extracted from another location, possibly by a different extractor. Its only required key is: "url" - the next URL to extract. - - Additionally, it may have properties believed to be identical to the - resolved entity, for example "title" if the title of the referred video is + The key "ie_key" can be set to the class name (minus the trailing "IE", + e.g. "Youtube") if the extractor class is known in advance. + Additionally, the dictionary may have any properties of the resolved entity + known in advance, for example "title" if the title of the referred video is known ahead of time. @@ -360,9 +379,19 @@ class InfoExtractor(object): return content - def _download_webpage(self, url_or_request, video_id, note=None, errnote=None, fatal=True): + def _download_webpage(self, url_or_request, video_id, note=None, errnote=None, fatal=True, tries=1, timeout=5): """ Returns the data of the page as a string """ - res = self._download_webpage_handle(url_or_request, video_id, note, errnote, fatal) + success = False + try_count = 0 + while success is False: + try: + res = self._download_webpage_handle(url_or_request, video_id, note, errnote, fatal) + success = True + except compat_http_client.IncompleteRead as e: + try_count += 1 + if try_count >= tries: + raise e + self._sleep(timeout, video_id) if res is False: return res else: @@ -390,6 +419,10 @@ class InfoExtractor(object): url_or_request, video_id, note, errnote, fatal=fatal) if (not fatal) and json_string is False: return None + return self._parse_json( + json_string, video_id, transform_source=transform_source, fatal=fatal) + + def _parse_json(self, json_string, video_id, transform_source=None, fatal=True): if transform_source: json_string = transform_source(json_string) try: @@ -439,7 +472,7 @@ class InfoExtractor(object): return video_info @staticmethod - def playlist_result(entries, playlist_id=None, playlist_title=None): + def playlist_result(entries, playlist_id=None, playlist_title=None, playlist_description=None): """Returns a playlist""" video_info = {'_type': 'playlist', 'entries': entries} @@ -447,6 +480,8 @@ class InfoExtractor(object): video_info['id'] = playlist_id if playlist_title: video_info['title'] = playlist_title + if playlist_description: + video_info['description'] = playlist_description return video_info def _search_regex(self, pattern, string, name, default=_NO_DEFAULT, fatal=True, flags=0, group=None): @@ -581,9 +616,9 @@ class InfoExtractor(object): if display_name is None: display_name = name return self._html_search_regex( - r'''(?ix)<meta + r'''(?isx)<meta (?=[^>]+(?:itemprop|name|property)=(["\']?)%s\1) - [^>]+content=(["\'])(?P<content>.*?)\1''' % re.escape(name), + [^>]+?content=(["\'])(?P<content>.*?)\2''' % re.escape(name), html, display_name, fatal=fatal, group='content', **kwargs) def _dc_search_uploader(self, html): @@ -707,8 +742,14 @@ class InfoExtractor(object): 'Unable to download f4m manifest') formats = [] + manifest_version = '1.0' media_nodes = manifest.findall('{http://ns.adobe.com/f4m/1.0}media') + if not media_nodes: + manifest_version = '2.0' + media_nodes = manifest.findall('{http://ns.adobe.com/f4m/2.0}media') for i, media_el in enumerate(media_nodes): + if manifest_version == '2.0': + manifest_url = '/'.join(manifest_url.split('/')[:-1]) + '/' + media_el.attrib.get('href') tbr = int_or_none(media_el.attrib.get('bitrate')) format_id = 'f4m-%d' % (i if tbr is None else tbr) formats.append({ @@ -790,6 +831,49 @@ class InfoExtractor(object): self._sort_formats(formats) return formats + # TODO: improve extraction + def _extract_smil_formats(self, smil_url, video_id): + smil = self._download_xml( + smil_url, video_id, 'Downloading SMIL file', + 'Unable to download SMIL file') + + base = smil.find('./head/meta').get('base') + + formats = [] + rtmp_count = 0 + for video in smil.findall('./body/switch/video'): + src = video.get('src') + if not src: + continue + bitrate = int_or_none(video.get('system-bitrate') or video.get('systemBitrate'), 1000) + width = int_or_none(video.get('width')) + height = int_or_none(video.get('height')) + proto = video.get('proto') + if not proto: + if base: + if base.startswith('rtmp'): + proto = 'rtmp' + elif base.startswith('http'): + proto = 'http' + ext = video.get('ext') + if proto == 'm3u8': + formats.extend(self._extract_m3u8_formats(src, video_id, ext)) + elif proto == 'rtmp': + rtmp_count += 1 + streamer = video.get('streamer') or base + formats.append({ + 'url': streamer, + 'play_path': src, + 'ext': 'flv', + 'format_id': 'rtmp-%d' % (rtmp_count if bitrate is None else bitrate), + 'tbr': bitrate, + 'width': width, + 'height': height, + }) + self._sort_formats(formats) + + return formats + def _live_title(self, name): """ Generate the title for a live video """ now = datetime.datetime.now() @@ -819,10 +903,40 @@ class InfoExtractor(object): return res def _set_cookie(self, domain, name, value, expire_time=None): - cookie = compat_cookiejar.Cookie(0, name, value, None, None, domain, None, + cookie = compat_cookiejar.Cookie( + 0, name, value, None, None, domain, None, None, '/', True, False, expire_time, '', None, None, None) self._downloader.cookiejar.set_cookie(cookie) + def get_testcases(self, include_onlymatching=False): + t = getattr(self, '_TEST', None) + if t: + assert not hasattr(self, '_TESTS'), \ + '%s has _TEST and _TESTS' % type(self).__name__ + tests = [t] + else: + tests = getattr(self, '_TESTS', []) + for t in tests: + if not include_onlymatching and t.get('only_matching', False): + continue + t['name'] = type(self).__name__[:-len('IE')] + yield t + + def is_suitable(self, age_limit): + """ Test whether the extractor is generally suitable for the given + age limit (i.e. pornographic sites are not, all others usually are) """ + + any_restricted = False + for tc in self.get_testcases(include_onlymatching=False): + if 'playlist' in tc: + tc = tc['playlist'][0] + is_restricted = age_restricted( + tc.get('info_dict', {}).get('age_limit'), age_limit) + if not is_restricted: + return True + any_restricted = any_restricted or is_restricted + return not any_restricted + class SearchInfoExtractor(InfoExtractor): """ diff --git a/youtube_dl/extractor/commonmistakes.py b/youtube_dl/extractor/commonmistakes.py new file mode 100644 index 0000000..75c0690 --- /dev/null +++ b/youtube_dl/extractor/commonmistakes.py @@ -0,0 +1,29 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ExtractorError + + +class CommonMistakesIE(InfoExtractor): + IE_DESC = False # Do not list + _VALID_URL = r'''(?x) + (?:url|URL) + ''' + + _TESTS = [{ + 'url': 'url', + 'only_matching': True, + }, { + 'url': 'URL', + 'only_matching': True, + }] + + def _real_extract(self, url): + msg = ( + 'You\'ve asked youtube-dl to download the URL "%s". ' + 'That doesn\'t make any sense. ' + 'Simply remove the parameter in your command or configuration.' + ) % url + if self._downloader.params.get('verbose'): + msg += ' Add -v to the command line to see what arguments and configuration youtube-dl got.' + raise ExtractorError(msg, expected=True) diff --git a/youtube_dl/extractor/condenast.py b/youtube_dl/extractor/condenast.py index 7a7e793..3db4db4 100644 --- a/youtube_dl/extractor/condenast.py +++ b/youtube_dl/extractor/condenast.py @@ -5,12 +5,14 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, - orderedSet, compat_urllib_parse_urlparse, compat_urlparse, ) +from ..utils import ( + orderedSet, +) class CondeNastIE(InfoExtractor): diff --git a/youtube_dl/extractor/crunchyroll.py b/youtube_dl/extractor/crunchyroll.py index d7e2b84..1680f53 100644 --- a/youtube_dl/extractor/crunchyroll.py +++ b/youtube_dl/extractor/crunchyroll.py @@ -10,10 +10,12 @@ import xml.etree.ElementTree from hashlib import sha1 from math import pow, sqrt, floor from .subtitles import SubtitlesInfoExtractor -from ..utils import ( - ExtractorError, +from ..compat import ( compat_urllib_parse, compat_urllib_request, +) +from ..utils import ( + ExtractorError, bytes_to_intlist, intlist_to_bytes, unified_strdate, @@ -27,10 +29,9 @@ from .common import InfoExtractor class CrunchyrollIE(SubtitlesInfoExtractor): - _VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.com/(?:[^/]*/[^/?&]*?|media/\?id=)(?P<video_id>[0-9]+))(?:[/?&]|$)' - _TEST = { + _VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.(?:com|fr)/(?:[^/]*/[^/?&]*?|media/\?id=)(?P<video_id>[0-9]+))(?:[/?&]|$)' + _TESTS = [{ 'url': 'http://www.crunchyroll.com/wanna-be-the-strongest-in-the-world/episode-1-an-idol-wrestler-is-born-645513', - #'md5': 'b1639fd6ddfaa43788c85f6d1dddd412', 'info_dict': { 'id': '645513', 'ext': 'flv', @@ -45,7 +46,10 @@ class CrunchyrollIE(SubtitlesInfoExtractor): # rtmp 'skip_download': True, }, - } + }, { + 'url': 'http://www.crunchyroll.fr/girl-friend-beta/episode-11-goodbye-la-mode-661697', + 'only_matching': True, + }] _FORMAT_IDS = { '360': ('60', '106'), @@ -224,7 +228,7 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text video_thumbnail = self._search_regex(r'<episode_image_url>([^<]+)', playerdata, 'thumbnail', fatal=False) formats = [] - for fmt in re.findall(r'\?p([0-9]{3,4})=1', webpage): + for fmt in re.findall(r'showmedia\.([0-9]{3,4})p', webpage): stream_quality, stream_format = self._FORMAT_IDS[fmt] video_format = fmt + 'p' streamdata_req = compat_urllib_request.Request('http://www.crunchyroll.com/xml/') diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py index 5411066..955119d 100644 --- a/youtube_dl/extractor/cspan.py +++ b/youtube_dl/extractor/cspan.py @@ -27,7 +27,6 @@ class CSpanIE(InfoExtractor): 'url': 'http://www.c-span.org/video/?c4486943/cspan-international-health-care-models', # For whatever reason, the served video alternates between # two different ones - #'md5': 'dbb0f047376d457f2ab8b3929cbb2d0c', 'info_dict': { 'id': '340723', 'ext': 'mp4', diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index 936c13c..cf5841a 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -8,13 +8,15 @@ import itertools from .common import InfoExtractor from .subtitles import SubtitlesInfoExtractor -from ..utils import ( - compat_urllib_request, +from ..compat import ( compat_str, + compat_urllib_request, +) +from ..utils import ( + ExtractorError, + int_or_none, orderedSet, str_to_int, - int_or_none, - ExtractorError, unescapeHTML, ) diff --git a/youtube_dl/extractor/daum.py b/youtube_dl/extractor/daum.py index 45d66e2..934da76 100644 --- a/youtube_dl/extractor/daum.py +++ b/youtube_dl/extractor/daum.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, ) @@ -38,7 +38,7 @@ class DaumIE(InfoExtractor): canonical_url = 'http://tvpot.daum.net/v/%s' % video_id webpage = self._download_webpage(canonical_url, video_id) full_id = self._search_regex( - r'<iframe src="http://videofarm.daum.net/controller/video/viewer/Video.html\?.*?vid=(.+?)[&"]', + r'src=["\']http://videofarm\.daum\.net/controller/video/viewer/Video\.html\?.*?vid=(.+?)[&"\']', webpage, 'full id') query = compat_urllib_parse.urlencode({'vid': full_id}) info = self._download_xml( diff --git a/youtube_dl/extractor/dbtv.py b/youtube_dl/extractor/dbtv.py index 1d3e2ff..2122176 100644 --- a/youtube_dl/extractor/dbtv.py +++ b/youtube_dl/extractor/dbtv.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from ..compat import compat_str from ..utils import ( float_or_none, int_or_none, @@ -61,7 +62,7 @@ class DBTVIE(InfoExtractor): self._sort_formats(formats) return { - 'id': video['id'], + 'id': compat_str(video['id']), 'display_id': display_id, 'title': video['title'], 'description': clean_html(video['desc']), diff --git a/youtube_dl/extractor/discovery.py b/youtube_dl/extractor/discovery.py index 52c2d7d..d3e6675 100644 --- a/youtube_dl/extractor/discovery.py +++ b/youtube_dl/extractor/discovery.py @@ -1,47 +1,45 @@ from __future__ import unicode_literals -import re -import json - from .common import InfoExtractor +from ..utils import ( + parse_iso8601, + int_or_none, +) class DiscoveryIE(InfoExtractor): - _VALID_URL = r'http://www\.discovery\.com\/[a-zA-Z0-9\-]*/[a-zA-Z0-9\-]*/videos/(?P<id>[a-zA-Z0-9\-]*)(.htm)?' + _VALID_URL = r'http://www\.discovery\.com\/[a-zA-Z0-9\-]*/[a-zA-Z0-9\-]*/videos/(?P<id>[a-zA-Z0-9_\-]*)(?:\.htm)?' _TEST = { 'url': 'http://www.discovery.com/tv-shows/mythbusters/videos/mission-impossible-outtakes.htm', - 'md5': 'e12614f9ee303a6ccef415cb0793eba2', + 'md5': '3c69d77d9b0d82bfd5e5932a60f26504', 'info_dict': { - 'id': '614784', - 'ext': 'mp4', - 'title': 'MythBusters: Mission Impossible Outtakes', + 'id': 'mission-impossible-outtakes', + 'ext': 'flv', + 'title': 'Mission Impossible Outtakes', 'description': ('Watch Jamie Hyneman and Adam Savage practice being' ' each other -- to the point of confusing Jamie\'s dog -- and ' 'don\'t miss Adam moon-walking as Jamie ... behind Jamie\'s' ' back.'), 'duration': 156, + 'timestamp': 1303099200, + 'upload_date': '20110418', }, } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - video_list_json = self._search_regex(r'var videoListJSON = ({.*?});', - webpage, 'video list', flags=re.DOTALL) - video_list = json.loads(video_list_json) - info = video_list['clips'][0] - formats = [] - for f in info['mp4']: - formats.append( - {'url': f['src'], 'ext': 'mp4', 'tbr': int(f['bitrate'][:-1])}) + info = self._parse_json(self._search_regex( + r'(?s)<script type="application/ld\+json">(.*?)</script>', + webpage, 'video info'), video_id) return { - 'id': info['contentId'], - 'title': video_list['name'], - 'formats': formats, - 'description': info['videoCaption'], - 'thumbnail': info.get('videoStillURL') or info.get('thumbnailURL'), - 'duration': info['duration'], + 'id': video_id, + 'title': info['name'], + 'url': info['contentURL'], + 'description': info.get('description'), + 'thumbnail': info.get('thumbnailUrl'), + 'timestamp': parse_iso8601(info.get('uploadDate')), + 'duration': int_or_none(info.get('duration')), } diff --git a/youtube_dl/extractor/drbonanza.py b/youtube_dl/extractor/drbonanza.py new file mode 100644 index 0000000..7626219 --- /dev/null +++ b/youtube_dl/extractor/drbonanza.py @@ -0,0 +1,131 @@ +from __future__ import unicode_literals + +import json +import re + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_iso8601, +) + + +class DRBonanzaIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?dr\.dk/bonanza/(?:[^/]+/)+(?:[^/])+?(?:assetId=(?P<id>\d+))?(?:[#&]|$)' + + _TESTS = [{ + 'url': 'http://www.dr.dk/bonanza/serie/portraetter/Talkshowet.htm?assetId=65517', + 'md5': 'fe330252ddea607635cf2eb2c99a0af3', + 'info_dict': { + 'id': '65517', + 'ext': 'mp4', + 'title': 'Talkshowet - Leonard Cohen', + 'description': 'md5:8f34194fb30cd8c8a30ad8b27b70c0ca', + 'thumbnail': 're:^https?://.*\.(?:gif|jpg)$', + 'timestamp': 1295537932, + 'upload_date': '20110120', + 'duration': 3664, + }, + }, { + 'url': 'http://www.dr.dk/bonanza/radio/serie/sport/fodbold.htm?assetId=59410', + 'md5': '6dfe039417e76795fb783c52da3de11d', + 'info_dict': { + 'id': '59410', + 'ext': 'mp3', + 'title': 'EM fodbold 1992 Danmark - Tyskland finale Transmission', + 'description': 'md5:501e5a195749480552e214fbbed16c4e', + 'thumbnail': 're:^https?://.*\.(?:gif|jpg)$', + 'timestamp': 1223274900, + 'upload_date': '20081006', + 'duration': 7369, + }, + }] + + def _real_extract(self, url): + url_id = self._match_id(url) + webpage = self._download_webpage(url, url_id) + + if url_id: + info = json.loads(self._html_search_regex(r'({.*?%s.*})' % url_id, webpage, 'json')) + else: + # Just fetch the first video on that page + info = json.loads(self._html_search_regex(r'bonanzaFunctions.newPlaylist\(({.*})\)', webpage, 'json')) + + asset_id = str(info['AssetId']) + title = info['Title'].rstrip(' \'\"-,.:;!?') + duration = int_or_none(info.get('Duration'), scale=1000) + # First published online. "FirstPublished" contains the date for original airing. + timestamp = parse_iso8601( + re.sub(r'\.\d+$', '', info['Created'])) + + def parse_filename_info(url): + match = re.search(r'/\d+_(?P<width>\d+)x(?P<height>\d+)x(?P<bitrate>\d+)K\.(?P<ext>\w+)$', url) + if match: + return { + 'width': int(match.group('width')), + 'height': int(match.group('height')), + 'vbr': int(match.group('bitrate')), + 'ext': match.group('ext') + } + match = re.search(r'/\d+_(?P<bitrate>\d+)K\.(?P<ext>\w+)$', url) + if match: + return { + 'vbr': int(match.group('bitrate')), + 'ext': match.group(2) + } + return {} + + video_types = ['VideoHigh', 'VideoMid', 'VideoLow'] + preferencemap = { + 'VideoHigh': -1, + 'VideoMid': -2, + 'VideoLow': -3, + 'Audio': -4, + } + + formats = [] + for file in info['Files']: + if info['Type'] == "Video": + if file['Type'] in video_types: + format = parse_filename_info(file['Location']) + format.update({ + 'url': file['Location'], + 'format_id': file['Type'].replace('Video', ''), + 'preference': preferencemap.get(file['Type'], -10), + }) + formats.append(format) + elif file['Type'] == "Thumb": + thumbnail = file['Location'] + elif info['Type'] == "Audio": + if file['Type'] == "Audio": + format = parse_filename_info(file['Location']) + format.update({ + 'url': file['Location'], + 'format_id': file['Type'], + 'vcodec': 'none', + }) + formats.append(format) + elif file['Type'] == "Thumb": + thumbnail = file['Location'] + + description = '%s\n%s\n%s\n' % ( + info['Description'], info['Actors'], info['Colophon']) + + for f in formats: + f['url'] = f['url'].replace('rtmp://vod-bonanza.gss.dr.dk/bonanza/', 'http://vodfiles.dr.dk/') + f['url'] = f['url'].replace('mp4:bonanza', 'bonanza') + self._sort_formats(formats) + + display_id = re.sub(r'[^\w\d-]', '', re.sub(r' ', '-', title.lower())) + '-' + asset_id + display_id = re.sub(r'-+', '-', display_id) + + return { + 'id': asset_id, + 'display_id': display_id, + 'title': title, + 'formats': formats, + 'description': description, + 'thumbnail': thumbnail, + 'timestamp': timestamp, + 'duration': duration, + } diff --git a/youtube_dl/extractor/drtv.py b/youtube_dl/extractor/drtv.py index 93b3c9f..c44adb1 100644 --- a/youtube_dl/extractor/drtv.py +++ b/youtube_dl/extractor/drtv.py @@ -6,7 +6,7 @@ from ..utils import parse_iso8601 class DRTVIE(SubtitlesInfoExtractor): - _VALID_URL = r'http://(?:www\.)?dr\.dk/tv/se/(?:[^/]+/)+(?P<id>[\da-z-]+)(?:[/#?]|$)' + _VALID_URL = r'https?://(?:www\.)?dr\.dk/tv/se/(?:[^/]+/)+(?P<id>[\da-z-]+)(?:[/#?]|$)' _TEST = { 'url': 'http://www.dr.dk/tv/se/partiets-mand/partiets-mand-7-8', diff --git a/youtube_dl/extractor/dvtv.py b/youtube_dl/extractor/dvtv.py new file mode 100644 index 0000000..c1a4bc7 --- /dev/null +++ b/youtube_dl/extractor/dvtv.py @@ -0,0 +1,125 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + js_to_json, + unescapeHTML, + ExtractorError, +) + + +class DVTVIE(InfoExtractor): + IE_NAME = 'dvtv' + IE_DESC = 'http://video.aktualne.cz/' + + _VALID_URL = r'http://video\.aktualne\.cz/(?:[^/]+/)+r~(?P<id>[0-9a-f]{32})' + + _TESTS = [{ + 'url': 'http://video.aktualne.cz/dvtv/vondra-o-ceskem-stoleti-pri-pohledu-na-havla-mi-bylo-trapne/r~e5efe9ca855511e4833a0025900fea04/', + 'md5': '67cb83e4a955d36e1b5d31993134a0c2', + 'info_dict': { + 'id': 'dc0768de855511e49e4b0025900fea04', + 'ext': 'mp4', + 'title': 'Vondra o Českém století: Při pohledu na Havla mi bylo trapně', + } + }, { + 'url': 'http://video.aktualne.cz/dvtv/stropnicky-policie-vrbetice-preventivne-nekontrolovala/r~82ed4322849211e4a10c0025900fea04/', + 'md5': '6388f1941b48537dbd28791f712af8bf', + 'info_dict': { + 'id': '72c02230849211e49f60002590604f2e', + 'ext': 'mp4', + 'title': 'Stropnický: Policie Vrbětice preventivně nekontrolovala', + } + }, { + 'url': 'http://video.aktualne.cz/dvtv/dvtv-16-12-2014-utok-talibanu-boj-o-kliniku-uprchlici/r~973eb3bc854e11e498be002590604f2e/', + 'info_dict': { + 'title': 'DVTV 16. 12. 2014: útok Talibanu, boj o kliniku, uprchlíci', + 'id': '973eb3bc854e11e498be002590604f2e', + }, + 'playlist': [{ + 'md5': 'da7ca6be4935532241fa9520b3ad91e4', + 'info_dict': { + 'id': 'b0b40906854d11e4bdad0025900fea04', + 'ext': 'mp4', + 'title': 'Drtinová Veselovský TV 16. 12. 2014: Témata dne' + } + }, { + 'md5': '5f7652a08b05009c1292317b449ffea2', + 'info_dict': { + 'id': '420ad9ec854a11e4bdad0025900fea04', + 'ext': 'mp4', + 'title': 'Školní masakr možná změní boj s Talibanem, říká novinářka' + } + }, { + 'md5': '498eb9dfa97169f409126c617e2a3d64', + 'info_dict': { + 'id': '95d35580846a11e4b6d20025900fea04', + 'ext': 'mp4', + 'title': 'Boj o kliniku: Veřejný zájem, nebo právo na majetek?' + } + }, { + 'md5': 'b8dc6b744844032dab6ba3781a7274b9', + 'info_dict': { + 'id': '6fe14d66853511e4833a0025900fea04', + 'ext': 'mp4', + 'title': 'Pánek: Odmítání syrských uprchlíků je ostudou české vlády' + } + }], + }, { + 'url': 'http://video.aktualne.cz/v-cechach-poprve-zazni-zelenkova-zrestaurovana-mse/r~45b4b00483ec11e4883b002590604f2e/', + 'only_matching': True, + }] + + def _parse_video_metadata(self, js, video_id): + metadata = self._parse_json(js, video_id, transform_source=js_to_json) + + formats = [] + for video in metadata['sources']: + ext = video['type'][6:] + formats.append({ + 'url': video['file'], + 'ext': ext, + 'format_id': '%s-%s' % (ext, video['label']), + 'height': int(video['label'].rstrip('p')), + 'fps': 25, + }) + + self._sort_formats(formats) + + return { + 'id': metadata['mediaid'], + 'title': unescapeHTML(metadata['title']), + 'thumbnail': self._proto_relative_url(metadata['image'], 'http:'), + 'formats': formats + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + # single video + item = self._search_regex( + r"(?s)embedData[0-9a-f]{32}\['asset'\]\s*=\s*(\{.+?\});", + webpage, 'video', default=None, fatal=False) + + if item: + return self._parse_video_metadata(item, video_id) + + # playlist + items = re.findall( + r"(?s)BBX\.context\.assets\['[0-9a-f]{32}'\]\.push\(({.+?})\);", + webpage) + + if items: + return { + '_type': 'playlist', + 'id': video_id, + 'title': self._og_search_title(webpage), + 'entries': [self._parse_video_metadata(i, video_id) for i in items] + } + + raise ExtractorError('Could not find neither video nor playlist') diff --git a/youtube_dl/extractor/ebaumsworld.py b/youtube_dl/extractor/ebaumsworld.py index 63c2549..b6bfd2b 100644 --- a/youtube_dl/extractor/ebaumsworld.py +++ b/youtube_dl/extractor/ebaumsworld.py @@ -1,7 +1,5 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor @@ -20,8 +18,7 @@ class EbaumsWorldIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) config = self._download_xml( 'http://www.ebaumsworld.com/video/player/%s' % video_id, video_id) video_url = config.find('file').text diff --git a/youtube_dl/extractor/echomsk.py b/youtube_dl/extractor/echomsk.py new file mode 100644 index 0000000..d2d9404 --- /dev/null +++ b/youtube_dl/extractor/echomsk.py @@ -0,0 +1,46 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor + + +class EchoMskIE(InfoExtractor): + _VALID_URL = r'http://(?:www\.)?echo\.msk\.ru/sounds/(?P<id>\d+)' + _TEST = { + 'url': 'http://www.echo.msk.ru/sounds/1464134.html', + 'md5': '2e44b3b78daff5b458e4dbc37f191f7c', + 'info_dict': { + 'id': '1464134', + 'ext': 'mp3', + 'title': 'Особое мнение - 29 декабря 2014, 19:08', + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + audio_url = self._search_regex( + r'<a rel="mp3" href="([^"]+)">', webpage, 'audio URL') + + title = self._html_search_regex( + r'<a href="/programs/[^"]+" target="_blank">([^<]+)</a>', + webpage, 'title') + + air_date = self._html_search_regex( + r'(?s)<div class="date">(.+?)</div>', + webpage, 'date', fatal=False, default=None) + + if air_date: + air_date = re.sub(r'(\s)\1+', r'\1', air_date) + if air_date: + title = '%s - %s' % (title, air_date) + + return { + 'id': video_id, + 'url': audio_url, + 'title': title, + } diff --git a/youtube_dl/extractor/ehow.py b/youtube_dl/extractor/ehow.py index b766e17..9cb1bf3 100644 --- a/youtube_dl/extractor/ehow.py +++ b/youtube_dl/extractor/ehow.py @@ -1,8 +1,6 @@ from __future__ import unicode_literals -import re - -from ..utils import ( +from ..compat import ( compat_urllib_parse, ) from .common import InfoExtractor @@ -24,11 +22,10 @@ class EHowIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - video_url = self._search_regex(r'(?:file|source)=(http[^\'"&]*)', - webpage, 'video URL') + video_url = self._search_regex( + r'(?:file|source)=(http[^\'"&]*)', webpage, 'video URL') final_url = compat_urllib_parse.unquote(video_url) uploader = self._html_search_meta('uploader', webpage) title = self._og_search_title(webpage).replace(' | eHow', '') diff --git a/youtube_dl/extractor/eighttracks.py b/youtube_dl/extractor/eighttracks.py index f4c1e2a..fb5dbbe 100644 --- a/youtube_dl/extractor/eighttracks.py +++ b/youtube_dl/extractor/eighttracks.py @@ -6,9 +6,12 @@ import random import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_str, ) +from ..utils import ( + ExtractorError, +) class EightTracksIE(InfoExtractor): @@ -112,14 +115,29 @@ class EightTracksIE(InfoExtractor): session = str(random.randint(0, 1000000000)) mix_id = data['id'] track_count = data['tracks_count'] + duration = data['duration'] + avg_song_duration = float(duration) / track_count first_url = 'http://8tracks.com/sets/%s/play?player=sm&mix_id=%s&format=jsonh' % (session, mix_id) next_url = first_url entries = [] + for i in range(track_count): - api_json = self._download_webpage( - next_url, playlist_id, - note='Downloading song information %d/%d' % (i + 1, track_count), - errnote='Failed to download song information') + api_json = None + download_tries = 0 + + while api_json is None: + try: + api_json = self._download_webpage( + next_url, playlist_id, + note='Downloading song information %d/%d' % (i + 1, track_count), + errnote='Failed to download song information') + except ExtractorError: + if download_tries > 3: + raise + else: + download_tries += 1 + self._sleep(avg_song_duration, playlist_id) + api_data = json.loads(api_json) track_data = api_data['set']['track'] info = { @@ -131,6 +149,7 @@ class EightTracksIE(InfoExtractor): 'ext': 'm4a', } entries.append(info) + next_url = 'http://8tracks.com/sets/%s/next?player=sm&mix_id=%s&format=jsonh&track_id=%s' % ( session, mix_id, track_data['id']) return { diff --git a/youtube_dl/extractor/ellentv.py b/youtube_dl/extractor/ellentv.py index 3e79236..fc92ff8 100644 --- a/youtube_dl/extractor/ellentv.py +++ b/youtube_dl/extractor/ellentv.py @@ -1,7 +1,6 @@ # coding: utf-8 from __future__ import unicode_literals -import re import json from .common import InfoExtractor @@ -12,32 +11,49 @@ from ..utils import ( class EllenTVIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?ellentv\.com/videos/(?P<id>[a-z0-9_-]+)' - _TEST = { + _VALID_URL = r'https?://(?:www\.)?(?:ellentv|ellentube)\.com/videos/(?P<id>[a-z0-9_-]+)' + _TESTS = [{ 'url': 'http://www.ellentv.com/videos/0-7jqrsr18/', 'md5': 'e4af06f3bf0d5f471921a18db5764642', 'info_dict': { 'id': '0-7jqrsr18', 'ext': 'mp4', 'title': 'What\'s Wrong with These Photos? A Whole Lot', + 'description': 'md5:35f152dc66b587cf13e6d2cf4fa467f6', 'timestamp': 1406876400, 'upload_date': '20140801', } - } + }, { + 'url': 'http://ellentube.com/videos/0-dvzmabd5/', + 'md5': '98238118eaa2bbdf6ad7f708e3e4f4eb', + 'info_dict': { + 'id': '0-dvzmabd5', + 'ext': 'mp4', + 'title': '1 year old twin sister makes her brother laugh', + 'description': '1 year old twin sister makes her brother laugh', + 'timestamp': 1419542075, + 'upload_date': '20141225', + } + }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) + video_url = self._html_search_meta('VideoURL', webpage, 'url') + title = self._og_search_title(webpage, default=None) or self._search_regex( + r'pageName\s*=\s*"([^"]+)"', webpage, 'title') + description = self._html_search_meta( + 'description', webpage, 'description') or self._og_search_description(webpage) timestamp = parse_iso8601(self._search_regex( r'<span class="publish-date"><time datetime="([^"]+)">', webpage, 'timestamp')) return { 'id': video_id, - 'title': self._og_search_title(webpage), - 'url': self._html_search_meta('VideoURL', webpage, 'url'), + 'url': video_url, + 'title': title, + 'description': description, 'timestamp': timestamp, } @@ -55,8 +71,7 @@ class EllenTVClipsIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - playlist_id = mobj.group('id') + playlist_id = self._match_id(url) webpage = self._download_webpage(url, playlist_id) playlist = self._extract_playlist(webpage) diff --git a/youtube_dl/extractor/elpais.py b/youtube_dl/extractor/elpais.py index 4277202..00a69e6 100644 --- a/youtube_dl/extractor/elpais.py +++ b/youtube_dl/extractor/elpais.py @@ -1,8 +1,6 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import unified_strdate @@ -24,9 +22,7 @@ class ElPaisIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) prefix = self._html_search_regex( diff --git a/youtube_dl/extractor/engadget.py b/youtube_dl/extractor/engadget.py index 92ada81..4ea37eb 100644 --- a/youtube_dl/extractor/engadget.py +++ b/youtube_dl/extractor/engadget.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from .fivemin import FiveMinIE from ..utils import ( url_basename, ) @@ -27,11 +26,10 @@ class EngadgetIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) if video_id is not None: - return FiveMinIE._build_result(video_id) + return self.url_result('5min:%s' % video_id) else: title = url_basename(url) webpage = self._download_webpage(url, title) @@ -39,5 +37,5 @@ class EngadgetIE(InfoExtractor): return { '_type': 'playlist', 'title': title, - 'entries': [FiveMinIE._build_result(id) for id in ids] + 'entries': [self.url_result('5min:%s' % vid) for vid in ids] } diff --git a/youtube_dl/extractor/eroprofile.py b/youtube_dl/extractor/eroprofile.py new file mode 100644 index 0000000..79e2fbd --- /dev/null +++ b/youtube_dl/extractor/eroprofile.py @@ -0,0 +1,45 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class EroProfileIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?eroprofile\.com/m/videos/view/(?P<id>[^/]+)' + _TEST = { + 'url': 'http://www.eroprofile.com/m/videos/view/sexy-babe-softcore', + 'md5': 'c26f351332edf23e1ea28ce9ec9de32f', + 'info_dict': { + 'id': '3733775', + 'display_id': 'sexy-babe-softcore', + 'ext': 'm4v', + 'title': 'sexy babe softcore', + 'thumbnail': 're:https?://.*\.jpg', + 'age_limit': 18, + } + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + video_id = self._search_regex( + [r"glbUpdViews\s*\('\d*','(\d+)'", r'p/report/video/(\d+)'], + webpage, 'video id', default=None) + + video_url = self._search_regex( + r'<source src="([^"]+)', webpage, 'video url') + title = self._html_search_regex( + r'Title:</th><td>([^<]+)</td>', webpage, 'title') + thumbnail = self._search_regex( + r'onclick="showVideoPlayer\(\)"><img src="([^"]+)', + webpage, 'thumbnail', fatal=False) + + return { + 'id': video_id, + 'display_id': display_id, + 'url': video_url, + 'title': title, + 'thumbnail': thumbnail, + 'age_limit': 18, + } diff --git a/youtube_dl/extractor/escapist.py b/youtube_dl/extractor/escapist.py index 476fc22..e240cb8 100644 --- a/youtube_dl/extractor/escapist.py +++ b/youtube_dl/extractor/escapist.py @@ -3,9 +3,10 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, - +) +from ..utils import ( ExtractorError, ) diff --git a/youtube_dl/extractor/everyonesmixtape.py b/youtube_dl/extractor/everyonesmixtape.py index d237a82..d872d82 100644 --- a/youtube_dl/extractor/everyonesmixtape.py +++ b/youtube_dl/extractor/everyonesmixtape.py @@ -3,8 +3,10 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_request, +) +from ..utils import ( ExtractorError, ) diff --git a/youtube_dl/extractor/extremetube.py b/youtube_dl/extractor/extremetube.py index aacbf14..36ba331 100644 --- a/youtube_dl/extractor/extremetube.py +++ b/youtube_dl/extractor/extremetube.py @@ -3,16 +3,18 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse_urlparse, compat_urllib_request, compat_urllib_parse, +) +from ..utils import ( str_to_int, ) class ExtremeTubeIE(InfoExtractor): - _VALID_URL = r'^(?:https?://)?(?:www\.)?(?P<url>extremetube\.com/.*?video/.+?(?P<videoid>[0-9]+))(?:[/?&]|$)' + _VALID_URL = r'https?://(?:www\.)?(?P<url>extremetube\.com/.*?video/.+?(?P<id>[0-9]+))(?:[/?&]|$)' _TESTS = [{ 'url': 'http://www.extremetube.com/video/music-video-14-british-euro-brit-european-cumshots-swallow-652431', 'md5': '1fb9228f5e3332ec8c057d6ac36f33e0', @@ -31,7 +33,7 @@ class ExtremeTubeIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('videoid') + video_id = mobj.group('id') url = 'http://www.' + mobj.group('url') req = compat_urllib_request.Request(url) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 2139f68..1ad4e77 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -13,9 +13,10 @@ from ..compat import ( compat_urllib_request, ) from ..utils import ( - urlencode_postdata, ExtractorError, + int_or_none, limit_length, + urlencode_postdata, ) @@ -36,7 +37,6 @@ class FacebookIE(InfoExtractor): 'info_dict': { 'id': '637842556329505', 'ext': 'mp4', - 'duration': 38, 'title': 're:Did you know Kei Nishikori is the first Asian man to ever reach a Grand Slam', } }, { @@ -107,9 +107,7 @@ class FacebookIE(InfoExtractor): self._login() def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) url = 'https://www.facebook.com/video/video.php?v=%s' % video_id webpage = self._download_webpage(url, video_id) @@ -149,6 +147,6 @@ class FacebookIE(InfoExtractor): 'id': video_id, 'title': video_title, 'url': video_url, - 'duration': int(video_data['video_duration']), - 'thumbnail': video_data['thumbnail_src'], + 'duration': int_or_none(video_data.get('video_duration')), + 'thumbnail': video_data.get('thumbnail_src'), } diff --git a/youtube_dl/extractor/fc2.py b/youtube_dl/extractor/fc2.py index 6f5d235..81ceace 100644 --- a/youtube_dl/extractor/fc2.py +++ b/youtube_dl/extractor/fc2.py @@ -1,19 +1,20 @@ #! -*- coding: utf-8 -*- from __future__ import unicode_literals -import re import hashlib from .common import InfoExtractor -from ..utils import ( - ExtractorError, +from ..compat import ( compat_urllib_request, compat_urlparse, ) +from ..utils import ( + ExtractorError, +) class FC2IE(InfoExtractor): - _VALID_URL = r'^http://video\.fc2\.com/((?P<lang>[^/]+)/)?content/(?P<id>[^/]+)' + _VALID_URL = r'^http://video\.fc2\.com/(?:[^/]+/)?content/(?P<id>[^/]+)' IE_NAME = 'fc2' _TEST = { 'url': 'http://video.fc2.com/en/content/20121103kUan1KHs', @@ -26,9 +27,7 @@ class FC2IE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) self._downloader.cookiejar.clear_session_cookies() # must clear diff --git a/youtube_dl/extractor/firedrive.py b/youtube_dl/extractor/firedrive.py index af439cc..3191116 100644 --- a/youtube_dl/extractor/firedrive.py +++ b/youtube_dl/extractor/firedrive.py @@ -4,11 +4,13 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( - ExtractorError, +from ..compat import ( compat_urllib_parse, compat_urllib_request, ) +from ..utils import ( + ExtractorError, +) class FiredriveIE(InfoExtractor): @@ -28,11 +30,8 @@ class FiredriveIE(InfoExtractor): }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) url = 'http://firedrive.com/file/%s' % video_id - webpage = self._download_webpage(url, video_id) if re.search(self._FILE_DELETED_REGEX, webpage) is not None: diff --git a/youtube_dl/extractor/fivemin.py b/youtube_dl/extractor/fivemin.py index f9c127c..5b24b92 100644 --- a/youtube_dl/extractor/fivemin.py +++ b/youtube_dl/extractor/fivemin.py @@ -1,11 +1,11 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_str, compat_urllib_parse, +) +from ..utils import ( ExtractorError, ) @@ -13,7 +13,7 @@ from ..utils import ( class FiveMinIE(InfoExtractor): IE_NAME = '5min' _VALID_URL = r'''(?x) - (?:https?://[^/]*?5min\.com/Scripts/PlayerSeed\.js\?(.*?&)?playList=| + (?:https?://[^/]*?5min\.com/Scripts/PlayerSeed\.js\?(?:.*?&)?playList=| 5min:) (?P<id>\d+) ''' @@ -41,13 +41,8 @@ class FiveMinIE(InfoExtractor): }, ] - @classmethod - def _build_result(cls, video_id): - return cls.url_result('5min:%s' % video_id, cls.ie_key()) - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) embed_url = 'https://embed.5min.com/playerseed/?playList=%s' % video_id embed_page = self._download_webpage(embed_url, video_id, 'Downloading embed page') diff --git a/youtube_dl/extractor/fktv.py b/youtube_dl/extractor/fktv.py index d09d1c1..190d9f9 100644 --- a/youtube_dl/extractor/fktv.py +++ b/youtube_dl/extractor/fktv.py @@ -13,7 +13,7 @@ from ..utils import ( class FKTVIE(InfoExtractor): IE_NAME = 'fernsehkritik.tv' - _VALID_URL = r'http://(?:www\.)?fernsehkritik\.tv/folge-(?P<ep>[0-9]+)(?:/.*)?' + _VALID_URL = r'http://(?:www\.)?fernsehkritik\.tv/folge-(?P<id>[0-9]+)(?:/.*)?' _TEST = { 'url': 'http://fernsehkritik.tv/folge-1', @@ -26,29 +26,32 @@ class FKTVIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - episode = int(mobj.group('ep')) + episode = int(self._match_id(url)) - server = random.randint(2, 4) - video_thumbnail = 'http://fernsehkritik.tv/images/magazin/folge%d.jpg' % episode - start_webpage = self._download_webpage('http://fernsehkritik.tv/folge-%d/Start' % episode, + video_thumbnail = 'http://fernsehkritik.tv/images/magazin/folge%s.jpg' % episode + start_webpage = self._download_webpage('http://fernsehkritik.tv/folge-%s/Start' % episode, episode) playlist = self._search_regex(r'playlist = (\[.*?\]);', start_webpage, 'playlist', flags=re.DOTALL) files = json.loads(re.sub('{[^{}]*?}', '{}', playlist)) - # TODO: return a single multipart video + videos = [] for i, _ in enumerate(files, 1): video_id = '%04d%d' % (episode, i) - video_url = 'http://dl%d.fernsehkritik.tv/fernsehkritik%d%s.flv' % (server, episode, '' if i == 1 else '-%d' % i) + video_url = 'http://fernsehkritik.tv/js/directme.php?file=%s%s.flv' % (episode, '' if i == 1 else '-%d' % i) videos.append({ + 'ext': 'flv', 'id': video_id, 'url': video_url, 'title': clean_html(get_element_by_id('eptitle', start_webpage)), 'description': clean_html(get_element_by_id('contentlist', start_webpage)), 'thumbnail': video_thumbnail }) - return videos + return { + '_type': 'multi_video', + 'entries': videos, + 'id': 'folge-%s' % episode, + } class FKTVPosteckeIE(InfoExtractor): diff --git a/youtube_dl/extractor/fourtube.py b/youtube_dl/extractor/fourtube.py index b22ce2a..b2284ab 100644 --- a/youtube_dl/extractor/fourtube.py +++ b/youtube_dl/extractor/fourtube.py @@ -3,12 +3,13 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_request, - unified_strdate, - str_to_int, +) +from ..utils import ( parse_duration, - clean_html, + parse_iso8601, + str_to_int, ) @@ -26,70 +27,81 @@ class FourTubeIE(InfoExtractor): 'uploader': 'WCP Club', 'uploader_id': 'wcp-club', 'upload_date': '20131031', + 'timestamp': 1383263892, 'duration': 583, + 'view_count': int, + 'like_count': int, + 'categories': list, } } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - - video_id = mobj.group('id') - webpage_url = 'http://www.4tube.com/videos/' + video_id - webpage = self._download_webpage(webpage_url, video_id) + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) - self.report_extraction(video_id) + title = self._html_search_meta('name', webpage) + timestamp = parse_iso8601(self._html_search_meta( + 'uploadDate', webpage)) + thumbnail = self._html_search_meta('thumbnailUrl', webpage) + uploader_id = self._html_search_regex( + r'<a class="img-avatar" href="[^"]+/channels/([^/"]+)" title="Go to [^"]+ page">', + webpage, 'uploader id') + uploader = self._html_search_regex( + r'<a class="img-avatar" href="[^"]+/channels/[^/"]+" title="Go to ([^"]+) page">', + webpage, 'uploader') - playlist_json = self._html_search_regex(r'var playerConfigPlaylist\s+=\s+([^;]+)', webpage, 'Playlist') - media_id = self._search_regex(r'idMedia:\s*(\d+)', playlist_json, 'Media Id') - sources = self._search_regex(r'sources:\s*\[([^\]]*)\]', playlist_json, 'Sources').split(',') - title = self._search_regex(r'title:\s*"([^"]*)', playlist_json, 'Title') - thumbnail_url = self._search_regex(r'image:\s*"([^"]*)', playlist_json, 'Thumbnail', fatal=False) + categories_html = self._search_regex( + r'(?s)><i class="icon icon-tag"></i>\s*Categories / Tags\s*.*?<ul class="list">(.*?)</ul>', + webpage, 'categories', fatal=False) + categories = None + if categories_html: + categories = [ + c.strip() for c in re.findall( + r'(?s)<li><a.*?>(.*?)</a>', categories_html)] - uploader_str = self._search_regex(r'<span>Uploaded by</span>(.*?)<span>', webpage, 'uploader', fatal=False) - mobj = re.search(r'<a href="/sites/(?P<id>[^"]+)"><strong>(?P<name>[^<]+)</strong></a>', uploader_str) - (uploader, uploader_id) = (mobj.group('name'), mobj.group('id')) if mobj else (clean_html(uploader_str), None) + view_count = str_to_int(self._search_regex( + r'<meta itemprop="interactionCount" content="UserPlays:([0-9,]+)">', + webpage, 'view count', fatal=False)) + like_count = str_to_int(self._search_regex( + r'<meta itemprop="interactionCount" content="UserLikes:([0-9,]+)">', + webpage, 'like count', fatal=False)) + duration = parse_duration(self._html_search_meta('duration', webpage)) - upload_date = None - view_count = None - duration = None - description = self._html_search_meta('description', webpage, 'description') - if description: - upload_date = self._search_regex(r'Published Date: (\d{2} [a-zA-Z]{3} \d{4})', description, 'upload date', - fatal=False) - if upload_date: - upload_date = unified_strdate(upload_date) - view_count = self._search_regex(r'Views: ([\d,\.]+)', description, 'view count', fatal=False) - if view_count: - view_count = str_to_int(view_count) - duration = parse_duration(self._search_regex(r'Length: (\d+m\d+s)', description, 'duration', fatal=False)) + params_js = self._search_regex( + r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)', + webpage, 'initialization parameters' + ) + params = self._parse_json('[%s]' % params_js, video_id) + media_id = params[0] + sources = ['%s' % p for p in params[2]] - token_url = "http://tkn.4tube.com/{0}/desktop/{1}".format(media_id, "+".join(sources)) + token_url = 'http://tkn.4tube.com/{0}/desktop/{1}'.format( + media_id, '+'.join(sources)) headers = { b'Content-Type': b'application/x-www-form-urlencoded', b'Origin': b'http://www.4tube.com', } token_req = compat_urllib_request.Request(token_url, b'{}', headers) tokens = self._download_json(token_req, video_id) - formats = [{ 'url': tokens[format]['token'], 'format_id': format + 'p', 'resolution': format + 'p', 'quality': int(format), } for format in sources] - self._sort_formats(formats) return { 'id': video_id, 'title': title, 'formats': formats, - 'thumbnail': thumbnail_url, + 'categories': categories, + 'thumbnail': thumbnail, 'uploader': uploader, 'uploader_id': uploader_id, - 'upload_date': upload_date, + 'timestamp': timestamp, + 'like_count': like_count, 'view_count': view_count, 'duration': duration, 'age_limit': 18, - 'webpage_url': webpage_url, } diff --git a/youtube_dl/extractor/foxgay.py b/youtube_dl/extractor/foxgay.py new file mode 100644 index 0000000..08b8ea3 --- /dev/null +++ b/youtube_dl/extractor/foxgay.py @@ -0,0 +1,48 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class FoxgayIE(InfoExtractor): + _VALID_URL = r'http://(?:www\.)?foxgay\.com/videos/(?:\S+-)?(?P<id>\d+)\.shtml' + _TEST = { + 'url': 'http://foxgay.com/videos/fuck-turkish-style-2582.shtml', + 'md5': '80d72beab5d04e1655a56ad37afe6841', + 'info_dict': { + 'id': '2582', + 'ext': 'mp4', + 'title': 'md5:6122f7ae0fc6b21ebdf59c5e083ce25a', + 'description': 'md5:5e51dc4405f1fd315f7927daed2ce5cf', + 'age_limit': 18, + 'thumbnail': 're:https?://.*\.jpg$', + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + title = self._html_search_regex( + r'<title>(?P<title>.*?)', + webpage, 'title', fatal=False) + description = self._html_search_regex( + r'

    (?P.*?)

    ', + webpage, 'description', fatal=False) + + # Find the URL for the iFrame which contains the actual video. + iframe = self._download_webpage( + self._html_search_regex(r'iframe src="(?P.*?)"', webpage, 'video frame'), + video_id) + video_url = self._html_search_regex( + r"v_path = '(?Phttp://.*?)'", iframe, 'url') + thumb_url = self._html_search_regex( + r"t_path = '(?Phttp://.*?)'", iframe, 'thumbnail', fatal=False) + + return { + 'id': video_id, + 'title': title, + 'url': video_url, + 'description': description, + 'thumbnail': thumb_url, + 'age_limit': 18, + } diff --git a/youtube_dl/extractor/foxnews.py b/youtube_dl/extractor/foxnews.py new file mode 100644 index 0000000..917f76b --- /dev/null +++ b/youtube_dl/extractor/foxnews.py @@ -0,0 +1,94 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + parse_iso8601, + int_or_none, +) + + +class FoxNewsIE(InfoExtractor): + _VALID_URL = r'https?://video\.foxnews\.com/v/(?:video-embed\.html\?video_id=)?(?P\d+)' + _TESTS = [ + { + 'url': 'http://video.foxnews.com/v/3937480/frozen-in-time/#sp=show-clips', + 'md5': '32aaded6ba3ef0d1c04e238d01031e5e', + 'info_dict': { + 'id': '3937480', + 'ext': 'flv', + 'title': 'Frozen in Time', + 'description': 'Doctors baffled by 16-year-old girl that is the size of a toddler', + 'duration': 265, + 'timestamp': 1304411491, + 'upload_date': '20110503', + 'thumbnail': 're:^https?://.*\.jpg$', + }, + }, + { + 'url': 'http://video.foxnews.com/v/3922535568001/rep-luis-gutierrez-on-if-obamas-immigration-plan-is-legal/#sp=show-clips', + 'md5': '5846c64a1ea05ec78175421b8323e2df', + 'info_dict': { + 'id': '3922535568001', + 'ext': 'mp4', + 'title': "Rep. Luis Gutierrez on if Obama's immigration plan is legal", + 'description': "Congressman discusses the president's executive action", + 'duration': 292, + 'timestamp': 1417662047, + 'upload_date': '20141204', + 'thumbnail': 're:^https?://.*\.jpg$', + }, + }, + { + 'url': 'http://video.foxnews.com/v/video-embed.html?video_id=3937480&d=video.foxnews.com', + 'only_matching': True, + }, + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + + video = self._download_json( + 'http://video.foxnews.com/v/feed/video/%s.js?template=fox' % video_id, video_id) + + item = video['channel']['item'] + title = item['title'] + description = item['description'] + timestamp = parse_iso8601(item['dc-date']) + + media_group = item['media-group'] + duration = None + formats = [] + for media in media_group['media-content']: + attributes = media['@attributes'] + video_url = attributes['url'] + if video_url.endswith('.f4m'): + formats.extend(self._extract_f4m_formats(video_url + '?hdcore=3.4.0&plugin=aasp-3.4.0.132.124', video_id)) + elif video_url.endswith('.m3u8'): + formats.extend(self._extract_m3u8_formats(video_url, video_id, 'flv')) + elif not video_url.endswith('.smil'): + duration = int_or_none(attributes.get('duration')) + formats.append({ + 'url': video_url, + 'format_id': media['media-category']['@attributes']['label'], + 'preference': 1, + 'vbr': int_or_none(attributes.get('bitrate')), + 'filesize': int_or_none(attributes.get('fileSize')) + }) + self._sort_formats(formats) + + media_thumbnail = media_group['media-thumbnail']['@attributes'] + thumbnails = [{ + 'url': media_thumbnail['url'], + 'width': int_or_none(media_thumbnail.get('width')), + 'height': int_or_none(media_thumbnail.get('height')), + }] if media_thumbnail else [] + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'duration': duration, + 'timestamp': timestamp, + 'formats': formats, + 'thumbnails': thumbnails, + } diff --git a/youtube_dl/extractor/franceculture.py b/youtube_dl/extractor/franceculture.py index 898e0dd..0c29721 100644 --- a/youtube_dl/extractor/franceculture.py +++ b/youtube_dl/extractor/franceculture.py @@ -5,7 +5,7 @@ import json import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_parse_qs, compat_urlparse, ) diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index e0420a4..bbc760a 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -6,13 +6,15 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( + compat_urllib_parse_urlparse, compat_urlparse, - ExtractorError, +) +from ..utils import ( clean_html, - parse_duration, - compat_urllib_parse_urlparse, + ExtractorError, int_or_none, + parse_duration, ) diff --git a/youtube_dl/extractor/gameone.py b/youtube_dl/extractor/gameone.py index 3022f53..a07d698 100644 --- a/youtube_dl/extractor/gameone.py +++ b/youtube_dl/extractor/gameone.py @@ -6,7 +6,9 @@ import re from .common import InfoExtractor from ..utils import ( xpath_with_ns, - parse_iso8601 + parse_iso8601, + float_or_none, + int_or_none, ) NAMESPACE_MAP = { @@ -21,25 +23,41 @@ RAW_MP4_URL = 'http://cdn.riptide-mtvn.com/' class GameOneIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?gameone\.de/tv/(?P\d+)' - _TEST = { - 'url': 'http://www.gameone.de/tv/288', - 'md5': '136656b7fb4c9cb4a8e2d500651c499b', - 'info_dict': { - 'id': '288', - 'ext': 'mp4', - 'title': 'Game One - Folge 288', - 'duration': 1238, - 'thumbnail': 'http://s3.gameone.de/gameone/assets/video_metas/teaser_images/000/643/636/big/640x360.jpg', - 'description': 'FIFA-Pressepokal 2014, Star Citizen, Kingdom Come: Deliverance, Project Cars, Schöner Trants Nerdquiz Folge 2 Runde 1', - 'age_limit': 16, - 'upload_date': '20140513', - 'timestamp': 1399980122, + _TESTS = [ + { + 'url': 'http://www.gameone.de/tv/288', + 'md5': '136656b7fb4c9cb4a8e2d500651c499b', + 'info_dict': { + 'id': '288', + 'ext': 'mp4', + 'title': 'Game One - Folge 288', + 'duration': 1238, + 'thumbnail': 'http://s3.gameone.de/gameone/assets/video_metas/teaser_images/000/643/636/big/640x360.jpg', + 'description': 'FIFA-Pressepokal 2014, Star Citizen, Kingdom Come: Deliverance, Project Cars, Schöner Trants Nerdquiz Folge 2 Runde 1', + 'age_limit': 16, + 'upload_date': '20140513', + 'timestamp': 1399980122, + } + }, + { + 'url': 'http://gameone.de/tv/220', + 'md5': '5227ca74c4ae6b5f74c0510a7c48839e', + 'info_dict': { + 'id': '220', + 'ext': 'mp4', + 'upload_date': '20120918', + 'description': 'Jet Set Radio HD, Tekken Tag Tournament 2, Source Filmmaker', + 'timestamp': 1347971451, + 'title': 'Game One - Folge 220', + 'duration': 896.62, + 'age_limit': 16, + } } - } + + ] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) og_video = self._og_search_video_url(webpage, secure=False) @@ -66,13 +84,13 @@ class GameOneIE(InfoExtractor): video_id, 'Downloading media:content') rendition_items = content.findall('.//rendition') - duration = int(rendition_items[0].get('duration')) + duration = float_or_none(rendition_items[0].get('duration')) formats = [ { 'url': re.sub(r'.*/(r2)', RAW_MP4_URL + r'\1', r.find('./src').text), - 'width': int(r.get('width')), - 'height': int(r.get('height')), - 'tbr': int(r.get('bitrate')), + 'width': int_or_none(r.get('width')), + 'height': int_or_none(r.get('height')), + 'tbr': int_or_none(r.get('bitrate')), } for r in rendition_items ] @@ -105,7 +123,8 @@ class GameOnePlaylistIE(InfoExtractor): webpage = self._download_webpage('http://www.gameone.de/tv', 'TV') max_id = max(map(int, re.findall(r']+?src=(["\'])(?Phttp://embed\.ted\.com/.+?)\1', webpage) + r']+?src=(["\'])(?Phttps?://embed(?:-ssl)?\.ted\.com/.+?)\1', webpage) if mobj is not None: return self.url_result(mobj.group('url'), 'TED') @@ -962,6 +986,13 @@ class GenericIE(InfoExtractor): if mobj is not None: return self.url_result(mobj.group('url'), 'SBS') + # Look for embedded Cinchcast player + mobj = re.search( + r']+?src=(["\'])(?Phttps?://player\.cinchcast\.com/.+?)\1', + webpage) + if mobj is not None: + return self.url_result(mobj.group('url'), 'Cinchcast') + mobj = re.search( r']+?src=(["\'])(?Phttps?://m(?:lb)?\.mlb\.com/shared/video/embed/embed\.html\?.+?)\1', webpage) @@ -1041,7 +1072,7 @@ class GenericIE(InfoExtractor): 'url': new_url, } if not found: - raise ExtractorError('Unsupported URL: %s' % url) + raise UnsupportedError(url) entries = [] for video_url in found: diff --git a/youtube_dl/extractor/giantbomb.py b/youtube_dl/extractor/giantbomb.py new file mode 100644 index 0000000..87cd191 --- /dev/null +++ b/youtube_dl/extractor/giantbomb.py @@ -0,0 +1,81 @@ +from __future__ import unicode_literals + +import re +import json + +from .common import InfoExtractor +from ..utils import ( + unescapeHTML, + qualities, + int_or_none, +) + + +class GiantBombIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?giantbomb\.com/videos/(?P[^/]+)/(?P\d+-\d+)' + _TEST = { + 'url': 'http://www.giantbomb.com/videos/quick-look-destiny-the-dark-below/2300-9782/', + 'md5': '57badeface303ecf6b98b812de1b9018', + 'info_dict': { + 'id': '2300-9782', + 'display_id': 'quick-look-destiny-the-dark-below', + 'ext': 'mp4', + 'title': 'Quick Look: Destiny: The Dark Below', + 'description': 'md5:0aa3aaf2772a41b91d44c63f30dfad24', + 'duration': 2399, + 'thumbnail': 're:^https?://.*\.jpg$', + } + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + display_id = mobj.group('display_id') + + webpage = self._download_webpage(url, display_id) + + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + thumbnail = self._og_search_thumbnail(webpage) + + video = json.loads(unescapeHTML(self._search_regex( + r'data-video="([^"]+)"', webpage, 'data-video'))) + + duration = int_or_none(video.get('lengthSeconds')) + + quality = qualities([ + 'f4m_low', 'progressive_low', 'f4m_high', + 'progressive_high', 'f4m_hd', 'progressive_hd']) + + formats = [] + for format_id, video_url in video['videoStreams'].items(): + if format_id == 'f4m_stream': + continue + if video_url.endswith('.f4m'): + f4m_formats = self._extract_f4m_formats(video_url + '?hdcore=3.3.1', display_id) + if f4m_formats: + f4m_formats[0]['quality'] = quality(format_id) + formats.extend(f4m_formats) + else: + formats.append({ + 'url': video_url, + 'format_id': format_id, + 'quality': quality(format_id), + }) + + if not formats: + youtube_id = video.get('youtubeID') + if youtube_id: + return self.url_result(youtube_id, 'Youtube') + + self._sort_formats(formats) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, + 'formats': formats, + } diff --git a/youtube_dl/extractor/giga.py b/youtube_dl/extractor/giga.py new file mode 100644 index 0000000..7758901 --- /dev/null +++ b/youtube_dl/extractor/giga.py @@ -0,0 +1,101 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import itertools + +from .common import InfoExtractor +from ..utils import ( + qualities, + compat_str, + parse_duration, + parse_iso8601, + str_to_int, +) + + +class GigaIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?giga\.de/(?:[^/]+/)*(?P[^/]+)' + _TESTS = [{ + 'url': 'http://www.giga.de/filme/anime-awesome/trailer/anime-awesome-chihiros-reise-ins-zauberland-das-beste-kommt-zum-schluss/', + 'md5': '6bc5535e945e724640664632055a584f', + 'info_dict': { + 'id': '2622086', + 'display_id': 'anime-awesome-chihiros-reise-ins-zauberland-das-beste-kommt-zum-schluss', + 'ext': 'mp4', + 'title': 'Anime Awesome: Chihiros Reise ins Zauberland – Das Beste kommt zum Schluss', + 'description': 'md5:afdf5862241aded4718a30dff6a57baf', + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 578, + 'timestamp': 1414749706, + 'upload_date': '20141031', + 'uploader': 'Robin Schweiger', + 'view_count': int, + }, + }, { + 'url': 'http://www.giga.de/games/channel/giga-top-montag/giga-topmontag-die-besten-serien-2014/', + 'only_matching': True, + }, { + 'url': 'http://www.giga.de/extra/netzkultur/videos/giga-games-tom-mats-robin-werden-eigene-wege-gehen-eine-ankuendigung/', + 'only_matching': True, + }, { + 'url': 'http://www.giga.de/tv/jonas-liest-spieletitel-eingedeutscht-episode-2/', + 'only_matching': True, + }] + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + video_id = self._search_regex( + [r'data-video-id="(\d+)"', r'/api/video/jwplayer/#v=(\d+)'], + webpage, 'video id') + + playlist = self._download_json( + 'http://www.giga.de/api/syndication/video/video_id/%s/playlist.json?content=syndication/key/368b5f151da4ae05ced7fa296bdff65a/' + % video_id, video_id)[0] + + quality = qualities(['normal', 'hd720']) + + formats = [] + for format_id in itertools.count(0): + fmt = playlist.get(compat_str(format_id)) + if not fmt: + break + formats.append({ + 'url': fmt['src'], + 'format_id': '%s-%s' % (fmt['quality'], fmt['type'].split('/')[-1]), + 'quality': quality(fmt['quality']), + }) + self._sort_formats(formats) + + title = self._html_search_meta( + 'title', webpage, 'title', fatal=True) + description = self._html_search_meta( + 'description', webpage, 'description') + thumbnail = self._og_search_thumbnail(webpage) + + duration = parse_duration(self._search_regex( + r'(?s)(?:data-video-id="{0}"|data-video="[^"]*/api/video/jwplayer/#v={0}[^"]*")[^>]*>.+?([^<]+)'.format(video_id), + webpage, 'duration', fatal=False)) + + timestamp = parse_iso8601(self._search_regex( + r'datetime="([^"]+)"', webpage, 'upload date', fatal=False)) + uploader = self._search_regex( + r'class="author">([^<]+)', webpage, 'uploader', fatal=False) + + view_count = str_to_int(self._search_regex( + r'([\d.]+)', webpage, 'view count', fatal=False)) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, + 'timestamp': timestamp, + 'uploader': uploader, + 'view_count': view_count, + 'formats': formats, + } diff --git a/youtube_dl/extractor/goldenmoustache.py b/youtube_dl/extractor/goldenmoustache.py index 10001d4..0fb5097 100644 --- a/youtube_dl/extractor/goldenmoustache.py +++ b/youtube_dl/extractor/goldenmoustache.py @@ -1,9 +1,6 @@ from __future__ import unicode_literals from .common import InfoExtractor -from ..utils import ( - int_or_none, -) class GoldenMoustacheIE(InfoExtractor): @@ -17,7 +14,6 @@ class GoldenMoustacheIE(InfoExtractor): 'title': 'Suricate - Le Poker', 'description': 'md5:3d1f242f44f8c8cb0a106f1fd08e5dc9', 'thumbnail': 're:^https?://.*\.jpg$', - 'view_count': int, } }, { 'url': 'http://www.goldenmoustache.com/le-lab-tout-effacer-mc-fly-et-carlito-55249/', @@ -28,7 +24,6 @@ class GoldenMoustacheIE(InfoExtractor): 'title': 'Le LAB - Tout Effacer (Mc Fly et Carlito)', 'description': 'md5:9b7fbf11023fb2250bd4b185e3de3b2a', 'thumbnail': 're:^https?://.*\.(?:png|jpg)$', - 'view_count': int, } }] @@ -42,9 +37,6 @@ class GoldenMoustacheIE(InfoExtractor): r'(.*?)(?: - Golden Moustache)?', webpage, 'title') thumbnail = self._og_search_thumbnail(webpage) description = self._og_search_description(webpage) - view_count = int_or_none(self._html_search_regex( - r'([0-9]+)\s*VUES', - webpage, 'view count', fatal=False)) return { 'id': video_id, @@ -53,5 +45,4 @@ class GoldenMoustacheIE(InfoExtractor): 'title': title, 'description': description, 'thumbnail': thumbnail, - 'view_count': view_count, } diff --git a/youtube_dl/extractor/golem.py b/youtube_dl/extractor/golem.py index 53714f4..2bfb990 100644 --- a/youtube_dl/extractor/golem.py +++ b/youtube_dl/extractor/golem.py @@ -2,8 +2,10 @@ from __future__ import unicode_literals from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urlparse, +) +from ..utils import ( determine_ext, ) diff --git a/youtube_dl/extractor/googlesearch.py b/youtube_dl/extractor/googlesearch.py index 469e1f9..498304c 100644 --- a/youtube_dl/extractor/googlesearch.py +++ b/youtube_dl/extractor/googlesearch.py @@ -4,7 +4,7 @@ import itertools import re from .common import SearchInfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, ) diff --git a/youtube_dl/extractor/gorillavid.py b/youtube_dl/extractor/gorillavid.py index 1ac1da8..ae24aff 100644 --- a/youtube_dl/extractor/gorillavid.py +++ b/youtube_dl/extractor/gorillavid.py @@ -4,11 +4,12 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( - ExtractorError, - determine_ext, +from ..compat import ( compat_urllib_parse, compat_urllib_request, +) +from ..utils import ( + ExtractorError, int_or_none, ) @@ -106,7 +107,6 @@ class GorillaVidIE(InfoExtractor): formats = [{ 'format_id': 'sd', 'url': video_url, - 'ext': determine_ext(video_url), 'quality': 1, }] diff --git a/youtube_dl/extractor/goshgay.py b/youtube_dl/extractor/goshgay.py index 18474cb..b116d25 100644 --- a/youtube_dl/extractor/goshgay.py +++ b/youtube_dl/extractor/goshgay.py @@ -2,57 +2,52 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..compat import ( + compat_parse_qs, +) from ..utils import ( - compat_urlparse, - ExtractorError, + parse_duration, ) class GoshgayIE(InfoExtractor): - _VALID_URL = r'^(?:https?://)www.goshgay.com/video(?P\d+?)($|/)' + _VALID_URL = r'https?://www\.goshgay\.com/video(?P\d+?)($|/)' _TEST = { - 'url': 'http://www.goshgay.com/video4116282', - 'md5': '268b9f3c3229105c57859e166dd72b03', + 'url': 'http://www.goshgay.com/video299069/diesel_sfw_xxx_video', + 'md5': '027fcc54459dff0feb0bc06a7aeda680', 'info_dict': { - 'id': '4116282', + 'id': '299069', 'ext': 'flv', - 'title': 'md5:089833a4790b5e103285a07337f245bf', - 'thumbnail': 're:http://.*\.jpg', + 'title': 'DIESEL SFW XXX Video', + 'thumbnail': 're:^http://.*\.jpg$', + 'duration': 79, 'age_limit': 18, } } def _real_extract(self, url): video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - title = self._og_search_title(webpage) - thumbnail = self._og_search_thumbnail(webpage) + + title = self._html_search_regex( + r'

    (.*?)<', webpage, 'title') + duration = parse_duration(self._html_search_regex( + r'\s*-?\s*(.*?)', + webpage, 'duration', fatal=False)) family_friendly = self._html_search_meta( 'isFamilyFriendly', webpage, default='false') - config_url = self._search_regex( - r"'config'\s*:\s*'([^']+)'", webpage, 'config URL') - - config = self._download_xml( - config_url, video_id, 'Downloading player config XML') - - if config is None: - raise ExtractorError('Missing config XML') - if config.tag != 'config': - raise ExtractorError('Missing config attribute') - fns = config.findall('file') - if len(fns) < 1: - raise ExtractorError('Missing media URI') - video_url = fns[0].text - url_comp = compat_urlparse.urlparse(url) - ref = "%s://%s%s" % (url_comp[0], url_comp[1], url_comp[2]) + flashvars = compat_parse_qs(self._html_search_regex( + r'[^?#]+)' + + _TEST = { + 'url': 'https://www.groupon.com/deals/bikram-yoga-huntington-beach-2#ooid=tubGNycTo_9Uxg82uESj4i61EYX8nyuf', + 'info_dict': { + 'id': 'bikram-yoga-huntington-beach-2', + 'title': '$49 for 10 Yoga Classes or One Month of Unlimited Classes at Bikram Yoga Huntington Beach ($180 Value)', + 'description': 'Studio kept at 105 degrees and 40% humidity with anti-microbial and anti-slip Flotex flooring; certified instructors', + }, + 'playlist': [{ + 'info_dict': { + 'id': 'tubGNycTo_9Uxg82uESj4i61EYX8nyuf', + 'ext': 'mp4', + 'title': 'Bikram Yoga Huntington Beach | Orange County', + }, + }], + 'params': { + 'skip_download': 'HLS', + } + } + + def _real_extract(self, url): + playlist_id = self._match_id(url) + webpage = self._download_webpage(url, playlist_id) + + payload = self._parse_json(self._search_regex( + r'var\s+payload\s*=\s*(.*?);\n', webpage, 'payload'), playlist_id) + videos = payload['carousel'].get('dealVideos', []) + entries = [] + for v in videos: + if v.get('provider') != 'OOYALA': + self.report_warning( + '%s: Unsupported video provider %s, skipping video' % + (playlist_id, v.get('provider'))) + continue + entries.append(self.url_result('ooyala:%s' % v['media'])) + + return { + '_type': 'playlist', + 'id': playlist_id, + 'entries': entries, + 'title': self._og_search_title(webpage), + 'description': self._og_search_description(webpage), + } diff --git a/youtube_dl/extractor/hellporno.py b/youtube_dl/extractor/hellporno.py new file mode 100644 index 0000000..7a1c75b --- /dev/null +++ b/youtube_dl/extractor/hellporno.py @@ -0,0 +1,71 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + js_to_json, + remove_end, +) + + +class HellPornoIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?hellporno\.com/videos/(?P[^/]+)' + _TEST = { + 'url': 'http://hellporno.com/videos/dixie-is-posing-with-naked-ass-very-erotic/', + 'md5': '1fee339c610d2049699ef2aa699439f1', + 'info_dict': { + 'id': '149116', + 'display_id': 'dixie-is-posing-with-naked-ass-very-erotic', + 'ext': 'mp4', + 'title': 'Dixie is posing with naked ass very erotic', + 'thumbnail': 're:https?://.*\.jpg$', + 'age_limit': 18, + } + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + title = remove_end(self._html_search_regex( + r'([^<]+)', webpage, 'title'), ' - Hell Porno') + + flashvars = self._parse_json(self._search_regex( + r'var\s+flashvars\s*=\s*({.+?});', webpage, 'flashvars'), + display_id, transform_source=js_to_json) + + video_id = flashvars.get('video_id') + thumbnail = flashvars.get('preview_url') + ext = flashvars.get('postfix', '.mp4')[1:] + + formats = [] + for video_url_key in ['video_url', 'video_alt_url']: + video_url = flashvars.get(video_url_key) + if not video_url: + continue + video_text = flashvars.get('%s_text' % video_url_key) + fmt = { + 'url': video_url, + 'ext': ext, + 'format_id': video_text, + } + m = re.search(r'^(?P\d+)[pP]', video_text) + if m: + fmt['height'] = int(m.group('height')) + formats.append(fmt) + self._sort_formats(formats) + + categories = self._html_search_meta( + 'keywords', webpage, 'categories', default='').split(',') + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'thumbnail': thumbnail, + 'categories': categories, + 'age_limit': 18, + 'formats': formats, + } diff --git a/youtube_dl/extractor/helsinki.py b/youtube_dl/extractor/helsinki.py index 5268efa..93107b3 100644 --- a/youtube_dl/extractor/helsinki.py +++ b/youtube_dl/extractor/helsinki.py @@ -2,9 +2,8 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor +from ..utils import js_to_json class HelsinkiIE(InfoExtractor): @@ -24,39 +23,21 @@ class HelsinkiIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - formats = [] - - mobj = re.search(r'file=((\w+):[^&]+)', webpage) - if mobj: - formats.append({ - 'ext': mobj.group(2), - 'play_path': mobj.group(1), - 'url': 'rtmp://flashvideo.it.helsinki.fi/vod/', - 'player_url': 'http://video.helsinki.fi/player.swf', - 'format_note': 'sd', - 'quality': 0, - }) - - mobj = re.search(r'hd\.file=((\w+):[^&]+)', webpage) - if mobj: - formats.append({ - 'ext': mobj.group(2), - 'play_path': mobj.group(1), - 'url': 'rtmp://flashvideo.it.helsinki.fi/vod/', - 'player_url': 'http://video.helsinki.fi/player.swf', - 'format_note': 'hd', - 'quality': 1, - }) + params = self._parse_json(self._html_search_regex( + r'(?s)jwplayer\("player"\).setup\((\{.*?\})\);', + webpage, 'player code'), video_id, transform_source=js_to_json) + formats = [{ + 'url': s['file'], + 'ext': 'mp4', + } for s in params['sources']] self._sort_formats(formats) return { 'id': video_id, 'title': self._og_search_title(webpage).replace('Video: ', ''), 'description': self._og_search_description(webpage), - 'thumbnail': self._og_search_thumbnail(webpage), 'formats': formats, } diff --git a/youtube_dl/extractor/hitbox.py b/youtube_dl/extractor/hitbox.py new file mode 100644 index 0000000..84bd7c0 --- /dev/null +++ b/youtube_dl/extractor/hitbox.py @@ -0,0 +1,166 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + clean_html, + parse_iso8601, + float_or_none, + int_or_none, + compat_str, +) + + +class HitboxIE(InfoExtractor): + IE_NAME = 'hitbox' + _VALID_URL = r'https?://(?:www\.)?hitbox\.tv/video/(?P[0-9]+)' + _TEST = { + 'url': 'http://www.hitbox.tv/video/203213', + 'info_dict': { + 'id': '203213', + 'title': 'hitbox @ gamescom, Sub Button Hype extended, Giveaway - hitbox News Update with Oxy', + 'alt_title': 'hitboxlive - Aug 9th #6', + 'description': '', + 'ext': 'mp4', + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 215.1666, + 'resolution': 'HD 720p', + 'uploader': 'hitboxlive', + 'view_count': int, + 'timestamp': 1407576133, + 'upload_date': '20140809', + 'categories': ['Live Show'], + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + } + + def _extract_metadata(self, url, video_id): + thumb_base = 'https://edge.sf.hitbox.tv' + metadata = self._download_json( + '%s/%s' % (url, video_id), video_id) + + date = 'media_live_since' + media_type = 'livestream' + if metadata.get('media_type') == 'video': + media_type = 'video' + date = 'media_date_added' + + video_meta = metadata.get(media_type, [])[0] + title = video_meta.get('media_status') + alt_title = video_meta.get('media_title') + description = clean_html( + video_meta.get('media_description') or + video_meta.get('media_description_md')) + duration = float_or_none(video_meta.get('media_duration')) + uploader = video_meta.get('media_user_name') + views = int_or_none(video_meta.get('media_views')) + timestamp = parse_iso8601(video_meta.get(date), ' ') + categories = [video_meta.get('category_name')] + thumbs = [ + {'url': thumb_base + video_meta.get('media_thumbnail'), + 'width': 320, + 'height': 180}, + {'url': thumb_base + video_meta.get('media_thumbnail_large'), + 'width': 768, + 'height': 432}, + ] + + return { + 'id': video_id, + 'title': title, + 'alt_title': alt_title, + 'description': description, + 'ext': 'mp4', + 'thumbnails': thumbs, + 'duration': duration, + 'uploader': uploader, + 'view_count': views, + 'timestamp': timestamp, + 'categories': categories, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + metadata = self._extract_metadata( + 'https://www.hitbox.tv/api/media/video', + video_id) + + player_config = self._download_json( + 'https://www.hitbox.tv/api/player/config/video/%s' % video_id, + video_id) + + clip = player_config.get('clip') + video_url = clip.get('url') + res = clip.get('bitrates', [])[0].get('label') + + metadata['resolution'] = res + metadata['url'] = video_url + metadata['protocol'] = 'm3u8' + + return metadata + + +class HitboxLiveIE(HitboxIE): + IE_NAME = 'hitbox:live' + _VALID_URL = r'https?://(?:www\.)?hitbox\.tv/(?!video)(?P.+)' + _TEST = { + 'url': 'http://www.hitbox.tv/dimak', + 'info_dict': { + 'id': 'dimak', + 'ext': 'mp4', + 'description': 'md5:c9f80fa4410bc588d7faa40003fc7d0e', + 'timestamp': int, + 'upload_date': compat_str, + 'title': compat_str, + 'uploader': 'Dimak', + }, + 'params': { + # live + 'skip_download': True, + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + metadata = self._extract_metadata( + 'https://www.hitbox.tv/api/media/live', + video_id) + + player_config = self._download_json( + 'https://www.hitbox.tv/api/player/config/live/%s' % video_id, + video_id) + + formats = [] + cdns = player_config.get('cdns') + servers = [] + for cdn in cdns: + base_url = cdn.get('netConnectionUrl') + host = re.search('.+\.([^\.]+\.[^\./]+)/.+', base_url).group(1) + if base_url not in servers: + servers.append(base_url) + for stream in cdn.get('bitrates'): + label = stream.get('label') + if label != 'Auto': + formats.append({ + 'url': '%s/%s' % (base_url, stream.get('url')), + 'ext': 'mp4', + 'vbr': stream.get('bitrate'), + 'resolution': label, + 'rtmp_live': True, + 'format_note': host, + 'page_url': url, + 'player_url': 'http://www.hitbox.tv/static/player/flowplayer/flowplayer.commercial-3.2.16.swf', + }) + + self._sort_formats(formats) + metadata['formats'] = formats + metadata['is_live'] = True + metadata['title'] = self._live_title(metadata.get('title')) + return metadata diff --git a/youtube_dl/extractor/hostingbulk.py b/youtube_dl/extractor/hostingbulk.py index 8e812b6..704d028 100644 --- a/youtube_dl/extractor/hostingbulk.py +++ b/youtube_dl/extractor/hostingbulk.py @@ -4,9 +4,11 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from ..compat import ( + compat_urllib_request, +) from ..utils import ( ExtractorError, - compat_urllib_request, int_or_none, urlencode_postdata, ) @@ -30,9 +32,7 @@ class HostingBulkIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) url = 'http://hostingbulk.com/{0:}.html'.format(video_id) # Custom request with cookie to set language to English, so our file diff --git a/youtube_dl/extractor/howstuffworks.py b/youtube_dl/extractor/howstuffworks.py index fccc238..e973391 100644 --- a/youtube_dl/extractor/howstuffworks.py +++ b/youtube_dl/extractor/howstuffworks.py @@ -1,12 +1,12 @@ from __future__ import unicode_literals -import re -import json -import random -import string - from .common import InfoExtractor -from ..utils import find_xpath_attr +from ..utils import ( + find_xpath_attr, + int_or_none, + js_to_json, + unescapeHTML, +) class HowStuffWorksIE(InfoExtractor): @@ -16,98 +16,74 @@ class HowStuffWorksIE(InfoExtractor): 'url': 'http://adventure.howstuffworks.com/5266-cool-jobs-iditarod-musher-video.htm', 'info_dict': { 'id': '450221', - 'display_id': 'cool-jobs-iditarod-musher', 'ext': 'flv', 'title': 'Cool Jobs - Iditarod Musher', - 'description': 'md5:82bb58438a88027b8186a1fccb365f90', + 'description': 'Cold sleds, freezing temps and warm dog breath... an Iditarod musher\'s dream. Kasey-Dee Gardner jumps on a sled to find out what the big deal is.', + 'display_id': 'cool-jobs-iditarod-musher', 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 161, }, - 'params': { - # md5 is not consistent - 'skip_download': True - } }, { 'url': 'http://adventure.howstuffworks.com/7199-survival-zone-food-and-water-in-the-savanna-video.htm', 'info_dict': { 'id': '453464', - 'display_id': 'survival-zone-food-and-water-in-the-savanna', 'ext': 'mp4', 'title': 'Survival Zone: Food and Water In the Savanna', - 'description': 'md5:7e1c89f6411434970c15fa094170c371', + 'description': 'Learn how to find both food and water while trekking in the African savannah. In this video from the Discovery Channel.', + 'display_id': 'survival-zone-food-and-water-in-the-savanna', 'thumbnail': 're:^https?://.*\.jpg$', }, - 'params': { - # md5 is not consistent - 'skip_download': True - } }, { 'url': 'http://entertainment.howstuffworks.com/arts/2706-sword-swallowing-1-by-dan-meyer-video.htm', 'info_dict': { 'id': '440011', - 'display_id': 'sword-swallowing-1-by-dan-meyer', 'ext': 'flv', 'title': 'Sword Swallowing #1 by Dan Meyer', - 'description': 'md5:b2409e88172913e2e7d3d1159b0ef735', + 'description': 'Video footage (1 of 3) used by permission of the owner Dan Meyer through Sword Swallowers Association International ', + 'display_id': 'sword-swallowing-1-by-dan-meyer', 'thumbnail': 're:^https?://.*\.jpg$', }, - 'params': { - # md5 is not consistent - 'skip_download': True - } }, ] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - display_id = mobj.group('id') + display_id = self._match_id(url) webpage = self._download_webpage(url, display_id) + clip_js = self._search_regex( + r'(?s)var clip = ({.*?});', webpage, 'clip info') + clip_info = self._parse_json( + clip_js, display_id, transform_source=js_to_json) - content_id = self._search_regex(r'var siteSectionId="(\d+)";', webpage, 'content id') - - mp4 = self._search_regex( - r'''(?xs)var\s+clip\s*=\s*{\s* - .+?\s* - content_id\s*:\s*%s\s*,\s* - .+?\s* - mp4\s*:\s*\[(.*?),?\]\s* - };\s* - videoData\.push\(clip\);''' % content_id, - webpage, 'mp4', fatal=False, default=None) - - smil = self._download_xml( - 'http://services.media.howstuffworks.com/videos/%s/smil-service.smil' % content_id, - content_id, 'Downloading video SMIL') - - http_base = find_xpath_attr( - smil, - './{0}head/{0}meta'.format('{http://www.w3.org/2001/SMIL20/Language}'), - 'name', - 'httpBase').get('content') - - def random_string(str_len=0): - return ''.join([random.choice(string.ascii_uppercase) for _ in range(str_len)]) - - URL_SUFFIX = '?v=2.11.3&fp=LNX 11,2,202,356&r=%s&g=%s' % (random_string(5), random_string(12)) - + video_id = clip_info['content_id'] formats = [] + m3u8_url = clip_info.get('m3u8') + if m3u8_url: + formats += self._extract_m3u8_formats(m3u8_url, video_id, 'mp4') + for video in clip_info.get('mp4', []): + formats.append({ + 'url': video['src'], + 'format_id': video['bitrate'], + 'vbr': int(video['bitrate'].rstrip('k')), + }) + + if not formats: + smil = self._download_xml( + 'http://services.media.howstuffworks.com/videos/%s/smil-service.smil' % video_id, + video_id, 'Downloading video SMIL') + + http_base = find_xpath_attr( + smil, + './{0}head/{0}meta'.format('{http://www.w3.org/2001/SMIL20/Language}'), + 'name', + 'httpBase').get('content') + + URL_SUFFIX = '?v=2.11.3&fp=LNX 11,2,202,356&r=A&g=A' - if mp4: - for video in json.loads('[%s]' % mp4): - bitrate = video['bitrate'] - fmt = { - 'url': video['src'].replace('http://pmd.video.howstuffworks.com', http_base) + URL_SUFFIX, - 'format_id': bitrate, - } - m = re.search(r'(?P\d+)[Kk]', bitrate) - if m: - fmt['vbr'] = int(m.group('vbr')) - formats.append(fmt) - else: for video in smil.findall( - './/{0}body/{0}switch/{0}video'.format('{http://www.w3.org/2001/SMIL20/Language}')): - vbr = int(video.attrib['system-bitrate']) / 1000 + './{0}body/{0}switch/{0}video'.format('{http://www.w3.org/2001/SMIL20/Language}')): + vbr = int_or_none(video.attrib['system-bitrate'], scale=1000) formats.append({ 'url': '%s/%s%s' % (http_base, video.attrib['src'], URL_SUFFIX), 'format_id': '%dk' % vbr, @@ -116,19 +92,12 @@ class HowStuffWorksIE(InfoExtractor): self._sort_formats(formats) - title = self._og_search_title(webpage) - TITLE_SUFFIX = ' : HowStuffWorks' - if title.endswith(TITLE_SUFFIX): - title = title[:-len(TITLE_SUFFIX)] - - description = self._og_search_description(webpage) - thumbnail = self._og_search_thumbnail(webpage) - return { - 'id': content_id, + 'id': '%s' % video_id, 'display_id': display_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, + 'title': unescapeHTML(clip_info['clip_title']), + 'description': unescapeHTML(clip_info.get('caption')), + 'thumbnail': clip_info.get('video_still_url'), + 'duration': clip_info.get('duration'), 'formats': formats, } diff --git a/youtube_dl/extractor/huffpost.py b/youtube_dl/extractor/huffpost.py index 4ccf6b9..a38eae4 100644 --- a/youtube_dl/extractor/huffpost.py +++ b/youtube_dl/extractor/huffpost.py @@ -39,8 +39,9 @@ class HuffPostIE(InfoExtractor): data = self._download_json(api_url, video_id)['data'] video_title = data['title'] - duration = parse_duration(data['running_time']) - upload_date = unified_strdate(data['schedule']['starts_at']) + duration = parse_duration(data.get('running_time')) + upload_date = unified_strdate( + data.get('schedule', {}).get('starts_at') or data.get('segment_start_date_time')) description = data.get('description') thumbnails = [] @@ -59,16 +60,11 @@ class HuffPostIE(InfoExtractor): 'ext': 'mp4', 'url': url, 'vcodec': 'none' if key.startswith('audio/') else None, - } for key, url in data['sources']['live'].items()] - if data.get('fivemin_id'): - fid = data['fivemin_id'] - fcat = str(int(fid) // 100 + 1) - furl = 'http://avideos.5min.com/2/' + fcat[-3:] + '/' + fcat + '/' + fid + '.mp4' - formats.append({ - 'format': 'fivemin', - 'url': furl, - 'preference': 1, - }) + } for key, url in data.get('sources', {}).get('live', {}).items()] + + if not formats and data.get('fivemin_id'): + return self.url_result('5min:%s' % data['fivemin_id']) + self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/hypem.py b/youtube_dl/extractor/hypem.py index 6d0d847..aa0724a 100644 --- a/youtube_dl/extractor/hypem.py +++ b/youtube_dl/extractor/hypem.py @@ -1,20 +1,20 @@ from __future__ import unicode_literals import json -import re import time from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, compat_urllib_request, - +) +from ..utils import ( ExtractorError, ) class HypemIE(InfoExtractor): - _VALID_URL = r'http://(?:www\.)?hypem\.com/track/([^/]+)/([^/]+)' + _VALID_URL = r'http://(?:www\.)?hypem\.com/track/(?P[^/]+)/' _TEST = { 'url': 'http://hypem.com/track/1v6ga/BODYWORK+-+TAME', 'md5': 'b9cc91b5af8995e9f0c1cee04c575828', @@ -27,8 +27,7 @@ class HypemIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - track_id = mobj.group(1) + track_id = self._match_id(url) data = {'ax': 1, 'ts': time.time()} data_encoded = compat_urllib_parse.urlencode(data) diff --git a/youtube_dl/extractor/imdb.py b/youtube_dl/extractor/imdb.py index f2c1c10..f29df36 100644 --- a/youtube_dl/extractor/imdb.py +++ b/youtube_dl/extractor/imdb.py @@ -4,7 +4,7 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urlparse, ) @@ -16,7 +16,6 @@ class ImdbIE(InfoExtractor): _TEST = { 'url': 'http://www.imdb.com/video/imdb/vi2524815897', - 'md5': '9f34fa777ade3a6e57a054fdbcb3a068', 'info_dict': { 'id': '2524815897', 'ext': 'mp4', diff --git a/youtube_dl/extractor/infoq.py b/youtube_dl/extractor/infoq.py index e76dd22..f25f436 100644 --- a/youtube_dl/extractor/infoq.py +++ b/youtube_dl/extractor/infoq.py @@ -1,10 +1,9 @@ from __future__ import unicode_literals import base64 -import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, ) @@ -24,9 +23,7 @@ class InfoQIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) video_title = self._html_search_regex(r'(.*?)', webpage, 'title') diff --git a/youtube_dl/extractor/internetvideoarchive.py b/youtube_dl/extractor/internetvideoarchive.py index 1e47991..483cc6f 100644 --- a/youtube_dl/extractor/internetvideoarchive.py +++ b/youtube_dl/extractor/internetvideoarchive.py @@ -3,9 +3,11 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urlparse, compat_urllib_parse, +) +from ..utils import ( xpath_with_ns, ) @@ -20,7 +22,7 @@ class InternetVideoArchiveIE(InfoExtractor): 'ext': 'mp4', 'title': 'SKYFALL', 'description': 'In SKYFALL, Bond\'s loyalty to M is tested as her past comes back to haunt her. As MI6 comes under attack, 007 must track down and destroy the threat, no matter how personal the cost.', - 'duration': 149, + 'duration': 152, }, } diff --git a/youtube_dl/extractor/iprima.py b/youtube_dl/extractor/iprima.py index 4247d63..8529bed 100644 --- a/youtube_dl/extractor/iprima.py +++ b/youtube_dl/extractor/iprima.py @@ -6,8 +6,10 @@ from random import random from math import floor from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_request, +) +from ..utils import ( ExtractorError, ) diff --git a/youtube_dl/extractor/ivi.py b/youtube_dl/extractor/ivi.py index f0fba1a..7a40032 100644 --- a/youtube_dl/extractor/ivi.py +++ b/youtube_dl/extractor/ivi.py @@ -5,8 +5,10 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_request, +) +from ..utils import ( ExtractorError, ) diff --git a/youtube_dl/extractor/karaoketv.py b/youtube_dl/extractor/karaoketv.py new file mode 100644 index 0000000..e3b43ff --- /dev/null +++ b/youtube_dl/extractor/karaoketv.py @@ -0,0 +1,40 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..compat import compat_urllib_parse +from ..utils import ( + js_to_json, +) + + +class KaraoketvIE(InfoExtractor): + _VALID_URL = r'http://karaoketv\.co\.il/\?container=songs&id=(?P[0-9]+)' + _TEST = { + 'url': 'http://karaoketv.co.il/?container=songs&id=171568', + 'info_dict': { + 'id': '171568', + 'ext': 'mp4', + 'title': 'אל העולם שלך - רותם כהן - שרים קריוקי', + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + page_video_url = self._og_search_video_url(webpage, video_id) + config_json = compat_urllib_parse.unquote_plus(self._search_regex( + r'config=(.*)', page_video_url, 'configuration')) + + urls_info_json = self._download_json( + config_json, video_id, 'Downloading configuration', + transform_source=js_to_json) + + url = urls_info_json['playlist'][0]['url'] + + return { + 'id': video_id, + 'title': self._og_search_title(webpage), + 'url': url, + } diff --git a/youtube_dl/extractor/keek.py b/youtube_dl/extractor/keek.py index 5d679e8..c0956ba 100644 --- a/youtube_dl/extractor/keek.py +++ b/youtube_dl/extractor/keek.py @@ -1,34 +1,39 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor class KeekIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?keek\.com/(?:!|\w+/keeks/)(?P\w+)' + _VALID_URL = r'https?://(?:www\.)?keek\.com/(?:!|\w+/keeks/)(?P\w+)' IE_NAME = 'keek' _TEST = { 'url': 'https://www.keek.com/ytdl/keeks/NODfbab', - 'file': 'NODfbab.mp4', - 'md5': '9b0636f8c0f7614afa4ea5e4c6e57e83', + 'md5': '09c5c109067536c1cec8bac8c21fea05', 'info_dict': { - 'uploader': 'ytdl', + 'id': 'NODfbab', + 'ext': 'mp4', + 'uploader': 'youtube-dl project', + 'uploader_id': 'ytdl', 'title': 'test chars: "\'/\\\u00e4<>This is a test video for youtube-dl.For more information, contact phihag@phihag.de .', }, } def _real_extract(self, url): - m = re.match(self._VALID_URL, url) - video_id = m.group('videoID') + video_id = self._match_id(url) video_url = 'http://cdn.keek.com/keek/video/%s' % video_id thumbnail = 'http://cdn.keek.com/keek/thumbnail/%s/w100/h75' % video_id webpage = self._download_webpage(url, video_id) - uploader = self._html_search_regex( - r'
    [\S\s]+?

    (?P.+?)

    ', - webpage, 'uploader', fatal=False) + raw_desc = self._html_search_meta('description', webpage) + if raw_desc: + uploader = self._html_search_regex( + r'Watch (.*?)\s+\(', raw_desc, 'uploader', fatal=False) + uploader_id = self._html_search_regex( + r'Watch .*?\(@(.+?)\)', raw_desc, 'uploader_id', fatal=False) + else: + uploader = None + uploader_id = None return { 'id': video_id, @@ -36,5 +41,6 @@ class KeekIE(InfoExtractor): 'ext': 'mp4', 'title': self._og_search_title(webpage), 'thumbnail': thumbnail, - 'uploader': uploader + 'uploader': uploader, + 'uploader_id': uploader_id, } diff --git a/youtube_dl/extractor/keezmovies.py b/youtube_dl/extractor/keezmovies.py index 75b63cf..97dcb51 100644 --- a/youtube_dl/extractor/keezmovies.py +++ b/youtube_dl/extractor/keezmovies.py @@ -4,7 +4,7 @@ import os import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse_urlparse, compat_urllib_request, compat_urllib_parse, @@ -15,7 +15,7 @@ from ..aes import ( class KeezMoviesIE(InfoExtractor): - _VALID_URL = r'^https?://(?:www\.)?keezmovies\.com/video/.+?(?P[0-9]+)(?:[/?&]|$)' + _VALID_URL = r'https?://(?:www\.)?keezmovies\.com/video/.+?(?P[0-9]+)(?:[/?&]|$)' _TEST = { 'url': 'http://www.keezmovies.com/video/petite-asian-lady-mai-playing-in-bathtub-1214711', 'file': '1214711.mp4', @@ -27,8 +27,7 @@ class KeezMoviesIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('videoid') + video_id = self._match_id(url) req = compat_urllib_request.Request(url) req.add_header('Cookie', 'age_verified=1') diff --git a/youtube_dl/extractor/khanacademy.py b/youtube_dl/extractor/khanacademy.py index 408d009..08a671f 100644 --- a/youtube_dl/extractor/khanacademy.py +++ b/youtube_dl/extractor/khanacademy.py @@ -22,8 +22,10 @@ class KhanAcademyIE(InfoExtractor): 'description': 'The perfect cipher', 'duration': 176, 'uploader': 'Brit Cruise', + 'uploader_id': 'khanacademy', 'upload_date': '20120411', - } + }, + 'add_ie': ['Youtube'], }, { 'url': 'https://www.khanacademy.org/math/applied-math/cryptography', 'info_dict': { diff --git a/youtube_dl/extractor/kontrtube.py b/youtube_dl/extractor/kontrtube.py index 41fd620..720bc93 100644 --- a/youtube_dl/extractor/kontrtube.py +++ b/youtube_dl/extractor/kontrtube.py @@ -10,13 +10,14 @@ from ..utils import int_or_none class KontrTubeIE(InfoExtractor): IE_NAME = 'kontrtube' IE_DESC = 'KontrTube.ru - Труба зовёт' - _VALID_URL = r'http://(?:www\.)?kontrtube\.ru/videos/(?P\d+)/.+' + _VALID_URL = r'http://(?:www\.)?kontrtube\.ru/videos/(?P\d+)/(?P[^/]+)/' _TEST = { 'url': 'http://www.kontrtube.ru/videos/2678/nad-olimpiyskoy-derevney-v-sochi-podnyat-rossiyskiy-flag/', 'md5': '975a991a4926c9a85f383a736a2e6b80', 'info_dict': { 'id': '2678', + 'display_id': 'nad-olimpiyskoy-derevney-v-sochi-podnyat-rossiyskiy-flag', 'ext': 'mp4', 'title': 'Над олимпийской деревней в Сочи поднят российский флаг', 'description': 'md5:80edc4c613d5887ae8ccf1d59432be41', @@ -28,21 +29,28 @@ class KontrTubeIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id = mobj.group('id') + display_id = mobj.group('display_id') - webpage = self._download_webpage(url, video_id, 'Downloading page') + webpage = self._download_webpage( + url, display_id, 'Downloading page') - video_url = self._html_search_regex(r"video_url: '(.+?)/?',", webpage, 'video URL') - thumbnail = self._html_search_regex(r"preview_url: '(.+?)/?',", webpage, 'video thumbnail', fatal=False) + video_url = self._html_search_regex( + r"video_url\s*:\s*'(.+?)/?',", webpage, 'video URL') + thumbnail = self._html_search_regex( + r"preview_url\s*:\s*'(.+?)/?',", webpage, 'video thumbnail', fatal=False) title = self._html_search_regex( r'(.+?)', webpage, 'video title') - description = self._html_search_meta('description', webpage, 'video description') + description = self._html_search_meta( + 'description', webpage, 'video description') mobj = re.search( - r'
    Длительность: (?P\d+)м:(?P\d+)с
    ', webpage) + r'
    Длительность: (?P\d+)м:(?P\d+)с
    ', + webpage) duration = int(mobj.group('minutes')) * 60 + int(mobj.group('seconds')) if mobj else None view_count = self._html_search_regex( - r'
    Просмотров: (\d+)
    ', webpage, 'view count', fatal=False) + r'
    Просмотров: (\d+)
    ', + webpage, 'view count', fatal=False) comment_count = None comment_str = self._html_search_regex( @@ -56,6 +64,7 @@ class KontrTubeIE(InfoExtractor): return { 'id': video_id, + 'display_id': display_id, 'url': video_url, 'thumbnail': thumbnail, 'title': title, diff --git a/youtube_dl/extractor/livestream.py b/youtube_dl/extractor/livestream.py index 03c4691..5247c6f 100644 --- a/youtube_dl/extractor/livestream.py +++ b/youtube_dl/extractor/livestream.py @@ -4,10 +4,12 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_str, compat_urllib_parse_urlparse, compat_urlparse, +) +from ..utils import ( ExtractorError, find_xpath_attr, int_or_none, diff --git a/youtube_dl/extractor/lnkgo.py b/youtube_dl/extractor/lnkgo.py new file mode 100644 index 0000000..a8e3578 --- /dev/null +++ b/youtube_dl/extractor/lnkgo.py @@ -0,0 +1,124 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + js_to_json, + unified_strdate, +) + + +class LnkGoIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?lnkgo\.alfa\.lt/visi\-video/(?P[^/]+)/ziurek\-(?P[A-Za-z0-9\-]+)' + _TESTS = [{ + 'url': 'http://lnkgo.alfa.lt/visi-video/yra-kaip-yra/ziurek-yra-kaip-yra-162', + 'info_dict': { + 'id': '46712', + 'ext': 'mp4', + 'title': 'Yra kaip yra', + 'upload_date': '20150107', + 'description': 'md5:d82a5e36b775b7048617f263a0e3475e', + 'age_limit': 7, + 'duration': 3019, + 'thumbnail': 're:^https?://.*\.jpg$' + }, + 'params': { + 'skip_download': True, # HLS download + }, + }, { + 'url': 'http://lnkgo.alfa.lt/visi-video/aktualai-pratesimas/ziurek-nerdas-taiso-kompiuteri-2', + 'info_dict': { + 'id': '47289', + 'ext': 'mp4', + 'title': 'Nėrdas: Kompiuterio Valymas', + 'upload_date': '20150113', + 'description': 'md5:7352d113a242a808676ff17e69db6a69', + 'age_limit': 18, + 'duration': 346, + 'thumbnail': 're:^https?://.*\.jpg$' + }, + 'params': { + 'skip_download': True, # HLS download + }, + }] + _AGE_LIMITS = { + 'N-7': 7, + 'N-14': 14, + 'S': 18, + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + display_id = mobj.group('display_id') + + webpage = self._download_webpage( + url, display_id, 'Downloading player webpage') + + video_id = self._search_regex( + r'data-ep="([^"]+)"', webpage, 'video ID') + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + + thumbnail_w = int_or_none( + self._og_search_property('image:width', webpage, 'thumbnail width', fatal=False)) + thumbnail_h = int_or_none( + self._og_search_property('image:height', webpage, 'thumbnail height', fatal=False)) + thumbnail = { + 'url': self._og_search_thumbnail(webpage), + } + if thumbnail_w and thumbnail_h: + thumbnail.update({ + 'width': thumbnail_w, + 'height': thumbnail_h, + }) + + upload_date = unified_strdate(self._search_regex( + r'class="meta-item\sair-time">.*?([^<]+)', webpage, 'upload date', fatal=False)) + duration = int_or_none(self._search_regex( + r'VideoDuration = "([^"]+)"', webpage, 'duration', fatal=False)) + + pg_rating = self._search_regex( + r'pgrating="([^"]+)"', webpage, 'PG rating', fatal=False, default='') + age_limit = self._AGE_LIMITS.get(pg_rating.upper(), 0) + + sources_js = self._search_regex( + r'(?s)sources:\s(\[.*?\]),', webpage, 'sources') + sources = self._parse_json( + sources_js, video_id, transform_source=js_to_json) + + formats = [] + for source in sources: + if source.get('provider') == 'rtmp': + m = re.search(r'^(?Prtmp://[^/]+/(?P[^/]+))/(?P.+)$', source['file']) + if not m: + continue + formats.append({ + 'format_id': 'rtmp', + 'ext': 'flv', + 'url': m.group('url'), + 'play_path': m.group('play_path'), + 'page_url': url, + }) + elif source.get('file').endswith('.m3u8'): + formats.append({ + 'format_id': 'hls', + 'ext': source.get('type', 'mp4'), + 'url': source['file'], + }) + + self._sort_formats(formats) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'formats': formats, + 'thumbnails': [thumbnail], + 'duration': duration, + 'description': description, + 'age_limit': age_limit, + 'upload_date': upload_date, + } diff --git a/youtube_dl/extractor/lrt.py b/youtube_dl/extractor/lrt.py index d72d470..9c2fbdd 100644 --- a/youtube_dl/extractor/lrt.py +++ b/youtube_dl/extractor/lrt.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals import re -import json from .common import InfoExtractor from ..utils import ( @@ -28,7 +27,6 @@ class LRTIE(InfoExtractor): 'params': { 'skip_download': True, # HLS download }, - } def _real_extract(self, url): @@ -44,7 +42,9 @@ class LRTIE(InfoExtractor): formats = [] for js in re.findall(r'(?s)config:\s*(\{.*?\})', webpage): - data = json.loads(js_to_json(js)) + data = self._parse_json(js, video_id, transform_source=js_to_json) + if 'provider' not in data: + continue if data['provider'] == 'rtmp': formats.append({ 'format_id': 'rtmp', diff --git a/youtube_dl/extractor/lynda.py b/youtube_dl/extractor/lynda.py index 2160d6c..26e8497 100644 --- a/youtube_dl/extractor/lynda.py +++ b/youtube_dl/extractor/lynda.py @@ -5,12 +5,14 @@ import json from .subtitles import SubtitlesInfoExtractor from .common import InfoExtractor -from ..utils import ( +from ..compat import ( + compat_str, compat_urllib_parse, compat_urllib_request, +) +from ..utils import ( ExtractorError, int_or_none, - compat_str, ) diff --git a/youtube_dl/extractor/malemotion.py b/youtube_dl/extractor/malemotion.py index 1abf6e4..0b85a59 100644 --- a/youtube_dl/extractor/malemotion.py +++ b/youtube_dl/extractor/malemotion.py @@ -1,43 +1,33 @@ +# coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, ) class MalemotionIE(InfoExtractor): - _VALID_URL = r'^(?:https?://)?malemotion\.com/video/(.+?)\.(?P.+?)(#|$)' + _VALID_URL = r'https?://malemotion\.com/video/(.+?)\.(?P.+?)(#|$)' _TEST = { - 'url': 'http://malemotion.com/video/bien-dur.10ew', - 'file': '10ew.mp4', - 'md5': 'b3cc49f953b107e4a363cdff07d100ce', + 'url': 'http://malemotion.com/video/bete-de-concours.ltc', + 'md5': '3013e53a0afbde2878bc39998c33e8a5', 'info_dict': { - "title": "Bien dur", - "age_limit": 18, + 'id': 'ltc', + 'ext': 'mp4', + 'title': 'Bête de Concours', + 'age_limit': 18, }, - 'skip': 'This video has been deleted.' } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group("id") - + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - self.report_extraction(video_id) - - # Extract video URL - video_url = compat_urllib_parse.unquote( - self._search_regex(r'(.*?)[0-9]+)\.' + _TEST = { + 'url': 'http://minhateca.com.br/pereba/misc/youtube-dl+test+video,125848331.mp4(video)', + 'info_dict': { + 'id': '125848331', + 'ext': 'mp4', + 'title': 'youtube-dl test video', + 'thumbnail': 're:^https?://.*\.jpg$', + 'filesize_approx': 1530000, + 'duration': 9, + 'view_count': int, + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + token = self._html_search_regex( + r'(.*?)

    ', webpage, 'title') + title, _, ext = title_str.rpartition('.') + filesize_approx = parse_filesize(self._html_search_regex( + r'

    (.*?)

    ', + webpage, 'file size approximation', fatal=False)) + duration = parse_duration(self._html_search_regex( + r'(?s)

    .*?class="bold">(.*?)<', + webpage, 'duration', fatal=False)) + view_count = int_or_none(self._html_search_regex( + r'

    ([0-9]+)

    ', + webpage, 'view count', fatal=False)) + + return { + 'id': video_id, + 'url': video_url, + 'title': title, + 'ext': ext, + 'filesize_approx': filesize_approx, + 'duration': duration, + 'view_count': view_count, + 'thumbnail': self._og_search_thumbnail(webpage), + } diff --git a/youtube_dl/extractor/mit.py b/youtube_dl/extractor/mit.py index 807b1dc..3c61a85 100644 --- a/youtube_dl/extractor/mit.py +++ b/youtube_dl/extractor/mit.py @@ -5,8 +5,10 @@ import json from .common import InfoExtractor from .youtube import YoutubeIE -from ..utils import ( +from ..compat import ( compat_urlparse, +) +from ..utils import ( clean_html, ExtractorError, get_element_by_id, @@ -15,7 +17,7 @@ from ..utils import ( class TechTVMITIE(InfoExtractor): IE_NAME = 'techtv.mit.edu' - _VALID_URL = r'https?://techtv\.mit\.edu/(videos|embeds)/(?P\d+)' + _VALID_URL = r'https?://techtv\.mit\.edu/(?:videos|embeds)/(?P\d+)' _TEST = { 'url': 'http://techtv.mit.edu/videos/25418-mit-dna-learning-center-set', @@ -29,8 +31,7 @@ class TechTVMITIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) raw_page = self._download_webpage( 'http://techtv.mit.edu/videos/%s' % video_id, video_id) clean_page = re.compile(r'', re.S).sub('', raw_page) @@ -104,7 +105,10 @@ class OCWMITIE(InfoExtractor): 'ext': 'mp4', 'title': 'Lecture 7: Multiple Discrete Random Variables: Expectations, Conditioning, Independence', 'description': 'In this lecture, the professor discussed multiple random variables, expectations, and binomial distribution.', - #'subtitles': 'http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/video-lectures/lecture-7-multiple-variables-expectations-independence/MIT6_041F11_lec07_300k.mp4.srt' + 'upload_date': '20121109', + 'uploader_id': 'MIT', + 'uploader': 'MIT OpenCourseWare', + # 'subtitles': 'http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/video-lectures/lecture-7-multiple-variables-expectations-independence/MIT6_041F11_lec07_300k.mp4.srt' } }, { @@ -113,8 +117,11 @@ class OCWMITIE(InfoExtractor): 'id': '7K1sB05pE0A', 'ext': 'mp4', 'title': 'Session 1: Introduction to Derivatives', + 'upload_date': '20090818', + 'uploader_id': 'MIT', + 'uploader': 'MIT OpenCourseWare', 'description': 'This section contains lecture video excerpts, lecture notes, an interactive mathlet with supporting documents, and problem solving videos.', - #'subtitles': 'http://ocw.mit.edu//courses/mathematics/18-01sc-single-variable-calculus-fall-2010/ocw-18.01-f07-lec01_300k.SRT' + # 'subtitles': 'http://ocw.mit.edu//courses/mathematics/18-01sc-single-variable-calculus-fall-2010/ocw-18.01-f07-lec01_300k.SRT' } } ] diff --git a/youtube_dl/extractor/mitele.py b/youtube_dl/extractor/mitele.py index 6691521..2567583 100644 --- a/youtube_dl/extractor/mitele.py +++ b/youtube_dl/extractor/mitele.py @@ -1,12 +1,13 @@ from __future__ import unicode_literals -import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, compat_urlparse, +) +from ..utils import ( get_element_by_attribute, parse_duration, strip_jsonp, @@ -15,7 +16,7 @@ from ..utils import ( class MiTeleIE(InfoExtractor): IE_NAME = 'mitele.es' - _VALID_URL = r'http://www\.mitele\.es/[^/]+/[^/]+/[^/]+/(?P[^/]+)/' + _VALID_URL = r'http://www\.mitele\.es/[^/]+/[^/]+/[^/]+/(?P[^/]+)/' _TEST = { 'url': 'http://www.mitele.es/programas-tv/diario-de/la-redaccion/programa-144/', @@ -31,12 +32,10 @@ class MiTeleIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - episode = mobj.group('episode') + episode = self._match_id(url) webpage = self._download_webpage(url, episode) embed_data_json = self._search_regex( - r'MSV\.embedData\[.*?\]\s*=\s*({.*?});', webpage, 'embed data', - flags=re.DOTALL + r'(?s)MSV\.embedData\[.*?\]\s*=\s*({.*?});', webpage, 'embed data', ).replace('\'', '"') embed_data = json.loads(embed_data_json) diff --git a/youtube_dl/extractor/mixcloud.py b/youtube_dl/extractor/mixcloud.py index bb8937c..07d1945 100644 --- a/youtube_dl/extractor/mixcloud.py +++ b/youtube_dl/extractor/mixcloud.py @@ -3,8 +3,10 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, +) +from ..utils import ( ExtractorError, HEADRequest, int_or_none, @@ -70,7 +72,7 @@ class MixcloudIE(InfoExtractor): raise ExtractorError('Unable to extract track url') PREFIX = ( - r'
    mofosex\.com/videos/(?P[0-9]+)/.*?\.html)' + _VALID_URL = r'https?://(?:www\.)?(?Pmofosex\.com/videos/(?P[0-9]+)/.*?\.html)' _TEST = { 'url': 'http://www.mofosex.com/videos/5018/japanese-teen-music-video.html', 'md5': '1b2eb47ac33cc75d4a80e3026b613c5a', @@ -26,7 +26,7 @@ class MofosexIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('videoid') + video_id = mobj.group('id') url = 'http://www.' + mobj.group('url') req = compat_urllib_request.Request(url) diff --git a/youtube_dl/extractor/moniker.py b/youtube_dl/extractor/moniker.py index 1c4f589..5de719b 100644 --- a/youtube_dl/extractor/moniker.py +++ b/youtube_dl/extractor/moniker.py @@ -5,7 +5,7 @@ import os.path import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, compat_urllib_request, ) @@ -37,10 +37,9 @@ class MonikerIE(InfoExtractor): }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) orig_webpage = self._download_webpage(url, video_id) + fields = re.findall(r'type="hidden" name="(.+?)"\s* value="?(.+?)">', orig_webpage) data = dict(fields) diff --git a/youtube_dl/extractor/mooshare.py b/youtube_dl/extractor/mooshare.py index 34a4bec..7603af5 100644 --- a/youtube_dl/extractor/mooshare.py +++ b/youtube_dl/extractor/mooshare.py @@ -1,14 +1,15 @@ from __future__ import unicode_literals import re -import time from .common import InfoExtractor -from ..utils import ( - ExtractorError, +from ..compat import ( compat_urllib_request, compat_urllib_parse, ) +from ..utils import ( + ExtractorError, +) class MooshareIE(InfoExtractor): @@ -43,9 +44,7 @@ class MooshareIE(InfoExtractor): ] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - + video_id = self._match_id(url) page = self._download_webpage(url, video_id, 'Downloading page') if re.search(r'>Video Not Found or Deleted<', page) is not None: @@ -64,8 +63,7 @@ class MooshareIE(InfoExtractor): 'http://mooshare.biz/%s' % video_id, compat_urllib_parse.urlencode(download_form)) request.add_header('Content-Type', 'application/x-www-form-urlencoded') - self.to_screen('%s: Waiting for timeout' % video_id) - time.sleep(5) + self._sleep(5, video_id) video_page = self._download_webpage(request, video_id, 'Downloading video page') diff --git a/youtube_dl/extractor/motorsport.py b/youtube_dl/extractor/motorsport.py index 7c0ec6a..c1a482d 100644 --- a/youtube_dl/extractor/motorsport.py +++ b/youtube_dl/extractor/motorsport.py @@ -1,63 +1,49 @@ # coding: utf-8 from __future__ import unicode_literals -import hashlib -import json -import re -import time - from .common import InfoExtractor -from ..utils import ( - compat_parse_qs, - compat_str, - int_or_none, +from ..compat import ( + compat_urlparse, ) class MotorsportIE(InfoExtractor): IE_DESC = 'motorsport.com' - _VALID_URL = r'http://www\.motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P[^/]+)/(?:$|[?#])' + _VALID_URL = r'http://www\.motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P[^/]+)/?(?:$|[?#])' _TEST = { 'url': 'http://www.motorsport.com/f1/video/main-gallery/red-bull-racing-2014-rules-explained/', - 'md5': '5592cb7c5005d9b2c163df5ac3dc04e4', 'info_dict': { - 'id': '7063', + 'id': '2-T3WuR-KMM', 'ext': 'mp4', 'title': 'Red Bull Racing: 2014 Rules Explained', - 'duration': 207, + 'duration': 208, 'description': 'A new clip from Red Bull sees Daniel Ricciardo and Sebastian Vettel explain the 2014 Formula One regulations – which are arguably the most complex the sport has ever seen.', - 'uploader': 'rainiere', - 'thumbnail': r're:^http://.*motorsport\.com/.+\.jpg$' - } + 'uploader': 'mcomstaff', + 'uploader_id': 'UC334JIYKkVnyFoNCclfZtHQ', + 'upload_date': '20140903', + 'thumbnail': r're:^https?://.+\.jpg$' + }, + 'add_ie': ['Youtube'], + 'params': { + 'skip_download': True, + }, } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - display_id = mobj.group('id') - + display_id = self._match_id(url) webpage = self._download_webpage(url, display_id) - flashvars_code = self._html_search_regex( - r'Video by: (.*?)', webpage, - 'uploader', fatal=False) + iframe_path = self._html_search_regex( + r'

    r#JJE!k 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%0DR+cbhn^8vntvJ&_-~=wYjiM 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